① c語言的指針部分 *p與p區別
c語言的指針部分 *p與p區別如下:
1、作用不同
*p表示此指針指向的內存地址中存放的內容。
p是一個指針變數的名字,表示此指針變數指向的內存地址。
2、輸出內容的格式不同
*p常用在一個和指針類型一致的變數或者常量。
p輸出一個指針的地址,通常是輸出一個16進制的數。
3、效果不同
*p是讓編譯器從指定的地址中讀取出數據。
p是用來存放要讀取數據的地址。
(1)c語言p代表的是數值還是地址擴展閱讀
C語言中使用指針的作用:
1、指針使程序的不同部分能夠共享數據
類似於共享內存,如果將某一個數據值的地址從一個函數傳遞到另外一個函數,這兩個函數就能使用同一數據。
2、利用指針,能在程序執行過程中預留新的內存空間
大多數情況下,可以看到程序使用的內存是通過顯式聲明分配給變數的內存。但是在很多應用場合中,可能程序運行時不清楚到底需要多少內存,使用指針可以讓程序在運行時獲得新的內存空間,並讓指針指向這一內存更為方便。
3、指針可以用來記錄數據項之間的關系
在高級程序設計應用中,指針被廣泛應用於構造單個數據值之間的聯系。比如,程序員通常在第一個數據的內部表示中包含指向下一個數據項的指針(實際上就是鏈表了),來說明這兩個數據項之間有概念上的順序關系。
② c語言,如果p代表地址的話,那麼*&p代表的是地址還是具體值為什麼
p是地址,*p是值,*&p是地址,可以把*和&理解互相抵消了,所以*&p等於p 上面的程序輸出一目瞭然,請採納!
③ C語言中*p和**p有何區別
一、表示的東西不同
*p表示p代表相應數據類型在存儲單元中存儲的首地址,而這個存儲單元存儲的是相應類型數據的數值。
**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值。
二、基類型不同
例如int *p1,**p2;
兩者本質上都是指針,但是兩者的基類型不同。p1的基類型是int,換句話說p1指針指向的是int型的數據,而p2的基類型是int *換句話說p2指向的是指向int型數據的指針,即指向指針的指針。
三、用法不同
例如int *p;
那麼p就是指向int類型變數的一個指針。(即數組)
如果int**p;
那麼p就是指向int*類型指針的一個指針。(即指向一維數組的指針,即二維數組)
④ c語言二級指針中二級指針p,*p是地址還是值,為什麼有的時候就是值而不是地址
對於一級指針而言,*p是取值,對於二級指針而言,*p是取地址,但是地址又是無符整形數據,所以在二級指針中你把*p當值來用的話,編譯不報錯,但是不合規定。
⑤ C語言指針**p是什麼意思
**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值!
例如:
int i=10; //定義了一個整型變數
int *p=&i; //定義了一個指針指向這個變數
int **p1=&p; //定義了一個二級指針指向p指針
那麼取出10的值方式為:
printf(「i=[%d] 」,*p);
printf(「i=[%d] 」,**p1);
(5)c語言p代表的是數值還是地址擴展閱讀:
指針與數組關系
指針數組:就是一個由指針組成的數組,那個數組的各個元素都是指針,指向某個內存地址。char *p[10];//p是一個指針數組
數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是一個常數。
example:
char (*p)[10]//p是一個數組指針
函數指針:本身是一個指針,指向一個函數入口地址,通過該指針可調用其指向的函數,使用函數指針可實現回調函數。
⑥ 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;
(6)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。
⑦ %p在c語言中是什麼意思
%p在 C 語言中用來是列印變數地址的。它是一個格式控制符,p即pointer(指針)的縮寫。指針的值是一個表示地址空間中某個存儲器單元的整數。%p輸出的結果一般是一個十六進制的整數,代表指針的值,附加前綴0x。
(7)c語言p代表的是數值還是地址擴展閱讀:
C語言是面向過程的、抽象化的程序開發設計語言,多用於底層開發。C語言可以用簡易的方式來編譯、處理低級存儲器。C語言可以用少量的機器語言並且不需要任何運行環境支持就可以高效率的運行。
C語言具有很強的跨平台特性,可在包括類似嵌入式處理器以及超級計算機等作業平台的許多計算機平台上進行編譯。它誕生於美國的貝爾實驗室,由B語言發展而來,目前 C語言還在不斷的完善。
⑧ 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語言,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。