Ⅰ c語言 *p 和p的區別
C語言中,*p 和p都常用在指針當中表示一個指針變數,*p 和p的區別:
1、表示的含義不同
*p表示此指針指向的內存地址中存放的內容。
p表示一個指針變數的名字,指此指針變數所指向的內存地址。
2、輸出的格式不同
*p一般是一個和指針類型一致的變數或者常量。
p輸出的是一個16進制數,輸出一個指針的地址。
3、功能不同
*p是讓程序去那個地址取出數據。
p存放的是地址。
例子:
1、int a[5]={1,2,3,4,5};
int *p=a;//這是在定義指針變數p的同時就直接給它初始化,即把數組a的首地址賦給它。
2、int a[5]={1,2,3,4,5};
int *p;//聲明指針變數p
p = a;
(1)c語言的p什麼意思擴展閱讀
(*p)操作是這樣一種運算,返回p 的值作為地址的那個空間的取值。(&p)則是這樣一種運算,返回當時聲明p 時開辟的地址。可以用賦值語句對內存地址賦值。
例:
int *p;
p=2003H;
*p=3000H
結果:
**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。
&&p=&(&(p))=&(3001H),此時出錯了,3001H 是個常數無法存放地址。
*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。
Ⅱ C語言中*p,p,&p的區別
*p是一個變數,是一個變數。
p是一個地址一個內存地址,不是一個變數。
int *p; printf("%p",p);
會列印出一個16位地址
&p中&是求地址符,例如&a是求a的地址,&b是b的地址
上面說過執行 int *p 之後,p是一個地址但也是一個變數。
&p是一個地址,順著這個地址能找到一個值,這個值是p,然後p也是一個地址,順著這個地址能找到另外一個值 p
而 p不再是一個地址,是一個變數就跟 int a=1,b=2; 里一樣。
通俗一點解釋找一本《C語言程序設計》的書,圖書館有一本《索引大全》的書,裡面記錄著館內所有書的位置
通過 《索引大全》 —— 《C語言程序設計》的位置 —— 《C語言程序設計》
上面三個東西分別是&p,p,&*p
Ⅲ c語言 p什麼意思
p是一個指針,printf("%d",*p++) 和printf("%d",*(p)++)沒區別,都是輸出比p指針所指向的數的地址大1的地址的數,若改為(*p)++則不一樣了,就成了輸出比p指針所指向的數大1的數。
Ⅳ c語言的指針部分*p與p的區別是什麼
p是指針變數,其值是一個變數的地址。p收到了哪個變數的地址,就指向哪個變數。該變數成為猛弊p的對象。
*p是p所指向的對象的值。
例如:inti=3,*p;
p=&i;注意:p收到i的地卜知租址,故p指向i,i是p的對象。
printf("%d,%d ",i,*p);輸出:3,3注意:*p是p所型兆指向的對象的值,即i的值。
Ⅳ C語言,int *p=G 中的p是指什麼
c語言中
int *p=G;
這句話的作用是:
①聲明一個指向整型數據的指針變數p(簡稱「指針p」);
②並把變數G的地址賦值給p(這個賦值的過程在更多的時候被稱為「讓指針p指向整型變數G」。
回答你的問題:
(1)p是一個特殊的變數;
(2)p中只能存放地址(又叫指針);
(3)p中只能存放整型變數的地址(也叫整型指針);
(4)所以,p是一個整型指針變數(或整型變數指針);
(5)p的值是變數G的地址,即p==G;
(6)我們可以用下面的運算得到與p相關的其他量值:
&p--得到變數p的地址;
p--得到變數G的地址;
*p--得到變數G的值,*p==G。
Ⅵ c語言中 !p 是什麼意思
意思:使當前指針指向鏈表的下一個結點。
一般作用在數據結構中的單鏈表裡由應用,語句中的p一般指向一個結構體類型的數據,此類型的數據通常表示節點;結構體里存放的一些數據和記錄下一個節點地址的指針變數next;這個next就好比鏈條一樣,連接著一個個節點。
->是一個整體,它是用於指向結構體、C++中的class等含有子數據的指針用來取子數據。換種說法,如果在C語言中定義了一個結構體,然後申明一個指針指向這個結構體,那麼要用指針取出結構體中的數據,就要用到「->」.
(6)c語言的p什麼意思擴展閱讀:
舉個例子:
struct Data
{
int a,b,c;
}; /*定義結構體*/
struct Data * p;/*定義結構體指針*/
struct Data A = {1,2,3};/*聲明變數A*/
int x;/*聲明一個變數x*/
p = &A ; /*讓p指向A*/
x = p->a;/*這句話的意思就是取出p所指向的結構體中包含的數據項a賦值給x*/
/*由於此時p指向A,因而 p->a == A.a,也就是1*/
對於一開始的問題p=p->next;這應該出現在C語言的鏈表,這里的next應該是一個與p同類型的結構體指針,其定義格式應該是:
struct Data
{
int a;
struct Data * next;
};/*定義結構體*/
main()
{
struct Data * p;/*聲明指針變數p*/
p = p->next;/*將next中的值賦給p*/
}
Ⅶ C語言指針**p是什麼意思
**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值!
例如:
int i=10; //定義了一個整型變數
int *p=&i; //定義了一個指針指向這個變數
int **p1=&p; //定義了一個二級指針指向p指針
那麼取出10的值方式為:
printf(「i=[%d] 」,*p);
printf(「i=[%d] 」,**p1);
(7)c語言的p什麼意思擴展閱讀:
指針與數組關系
指針數組:就是一個由指針組成的數組,那個數組的各個元素都是指針,指向某個內存地址。char *p[10];//p是一個指針數組
數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是一個常數。
example:
char (*p)[10]//p是一個數組指針
函數指針:本身是一個指針,指向一個函數入口地址,通過該指針可調用其指向的函數,使用函數指針可實現回調函數。
Ⅷ C語言程序86行代碼的這個p()是什麼意思
p是一個函數指針,p()是調用p所指向的函數。
Ⅸ C語言中,*p和p有什麼區別
如果p為普通指針變數,那麼:
p代表內存中的某存儲單元的地址,而*p代表該存儲單元中的存儲的內容。