各位老鐵們,大家好,今天由我來為大家分享常量指針和指針常量的區別,以及p的相關問題知識,希望對大家有所幫助。如果可以幫助到大家,還望關注收藏下本站,您的支持是我們最大的動力,謝謝大家了哈,下面我們開始吧!
為什么C語言字符串常量可以當做指針
在C語言中并沒有字符串這個類型。所說的字符串就是字符數組。也就是char類型的數組。與普通數組不同的,字符串必須以'\0'作為結束符。而在C語言中,類型為T的一維數組,其首地址等效于該類型的一維指針,即T*型。于是字符串,也就是字符數組,首地址就可以當做char*型使用了。事實上,在庫函數以及大多數使用到字符串作為參數的函數中,其參數都是char*型的。
指針和指針變量有什么區別呢
用例子來看一下。
inta=3;
int*p;
p=&a;
現在來看一下。a=3這個式子先解釋一下
等式右邊是常量,左邊是變量。
同理的
p=&a,左邊的是指針變量,右邊的是指針
指針的基本概念:為了區別內存的不同位置,內存被分成字節,內存的全部字節順序地賦予一個稱為地址的編號。程序中的變量將在內存中占據一定的內存字節,在這些字節中存儲的數據信息稱為變量的內容。
一個變量占用連續的若干個內存字節時,最前面的一個字節的地址就作為該變量的地址。指針就是內存地址,是變量的地址,或函數的入口地址。變量的地址在程序執行時,起著非常重要的作用。當計算機在計算含有變量的表達式時,計算機按變量的地址取出其內容,并按變量的地址將計算結果存入到變量占據的內存中。
如代碼:intx=l;x=x+2;其中語句“x=x+2;”中的第一個x涉及到變量x占據的內存,第二個x是引用變量x的內容。該語句的意義是“取X的內容,完成加上2的計算,并將計算結果存入變量X占據的內存中。”
c語言的指針部分*p與p的區別是什么
c語言的指針部分*p與p區別如下:
1、作用不同*p表示此指針指向的內存地址中存放的內容。p是一個指針變量的名字,表示此指針變量指向的內存地址。
2、輸出內容的格式不同*p常用在一個和指針類型一致的變量或者常量。p輸出一個指針的地址,通常是輸出一個16進制的數。
3、效果不同*p是讓編譯器從指定的地址中讀取出數據。p是用來存放要讀取數據的地址。
常量指針和指針常量有什么區別
有區別。區別是:常量指針和指針常量是指針相關的數據類型。常量指針是指將一個指針定義為不能修改其指向變量的指針,也就是指針所指向變量的值不能通過該指針修改。
而指針常量則指的是不能修改指針本身的值,即指針所指向的變量不能改變,指針本身可以指向其他變量。
數組和指針之間有什么關系
1、指針:系統為某一個變量開辟單元格,指針便指向此單元格的變量值。
2、數組:系統為某一組數開辟一組單元格,數組首地址便是你定義的數組變量名。
數組和指針的唯一區別是,不能改變數組名稱指向的地址。
對于數組來說,數組的首地址,也可以用指針來表示操作,如:
inta[10];
int*p,n;
p=a;
對第一個元素取值,可以用幾種方法:
n=a[0];
n=*p;
n=p[0];
n=*(p+0);
但是以下語句則是非法的:
readings=totals;//非法!不能改變readingstotals=dptr;//非法!不能改變totals
數組名稱是指針常量。不能讓它們指向除了它們所代表的數組之外的任何東西。
擴展資料
下面的程序定義了一個double數組和一個double指針,該指針分配了數組的起始地址。隨后,不僅指針符號可以與數組名稱一起使用,而且下標符號也可以與指針一起使用。
intmain()
{
constintNUM_COINS=5;
doublecoins[NUM_COINS]={0.05,0.1,0.25,0.5,1.0};
double*doublePtr;//Pointertoadouble
//AssigntheaddressofthecoinsarraytodoublePtr
doublePtr=coins;
//Displaythecontentsofthecoinsarray
//Usesubscriptswiththepointer!
cout<<setprecision(2);
cout<<"Herearethevaluesinthecoinsarray:\n";
for(intcount=0;count<NUM_COINS;count++)
cout<<doublePtr[count]<<"";
//Displaythecontentsofthecoinsarrayagain,butthistimeusepointernotationwiththearrayname!
cout<<"\nAndheretheyareagain:\n";
for(intcount=0;count<NUM_COINS;count++)
cout<<*(coins+count)<<"";
cout<<endl;
return0;
}
程序輸出結果:
Herearethevaluesinthecoinsarray:0.050.10.250.51Andheretheyareagain:0.050.10.250.51
當一個數組的地址分配給一個指針時,就不需要地址運算符了。由于數組的名稱已經是一個地址,所以使用&運算符是不正確的。但是,可以使用地址運算符來獲取數組中單個元素的地址。
關于常量指針和指針常量的區別的內容到此結束,希望對大家有所幫助。