c語言指針p
⑴ c語言中,若p為一個指針,則*p是指什麼
指針可以理解為內存空間的代號,*p
為該空間中所存變數。若將p比作杯子的名稱,那*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;
(2)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也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值!
例如:
int i=10; //定義了一個整型變數
int *p=&i; //定義了一個指針指向這個變數
int **p1=&p; //定義了一個二級指針指向p指針
那麼取出10的值方式為:
printf(「i=[%d] 」,*p);
printf(「i=[%d] 」,**p1);
(3)c語言指針p擴展閱讀:
指針與數組關系
指針數組:就是一個由指針組成的數組,那個數組的各個元素都是指針,指向某個內存地址。char *p[10];//p是一個指針數組
數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是一個常數。
example:
char (*p)[10]//p是一個數組指針
函數指針:本身是一個指針,指向一個函數入口地址,通過該指針可調用其指向的函數,使用函數指針可實現回調函數。
⑷ c語言的指針部分*p與p的區別是什麼
p是指針變數,其值是一個變數的地址。p收到了哪個變數的地址,就指向哪個變數。該變數成為p的對象。
*p是p所指向的對象的值。
例如:int i=3,*p;
p=&i; 注意:p收到i的地址,故p指向i,i是p的對象。
printf("%d,%d ",i,*p); 輸出:3,3 注意:*p是p所指向的對象的值,即i的值。
⑸ 在c語言的指針運算中*(p+1)與p+1有什麼區別 p是指針
*(p+1)表示具體的數值,指針p所指向的內存地址單元的下一個內存地址單元中的值;
p+1
表示地址,指針p所指向的內存地址的下一個內存地址。
可以通過下面的實例來理解*(p+1)與p+1之間的區別:
int *p; // 定義一個int類型的指針p
int a[3]={1,2,3}; // 定義一個int類型的數組a,並進行初始化
p = a; // 使指針p指向數組a的首地址
printf("%d", *(p+1)); // 輸出2,等價於a[1]
printf("%x", p+1); // 以16進制形式輸出a[1]的地址(如08ff12),等價於&a[1](&為取地址運算符)
⑹ c語言的指針部分 *p與p區別
c語言的指針部分 *p與p區別如下:
1、作用不同
*p表示此指針指向的內存地址中存放的內容。
p是一個指針變數的名字,表示此指針變數指向的內存地址。
2、輸出內容的格式不同
*p常用在一個和指針類型一致的變數或者常量。
p輸出一個指針的地址,通常是輸出一個16進制的數。
3、效果不同
*p是讓編譯器從指定的地址中讀取出數據。
p是用來存放要讀取數據的地址。
(6)c語言指針p擴展閱讀
C語言中使用指針的作用:
1、指針使程序的不同部分能夠共享數據
類似於共享內存,如果將某一個數據值的地址從一個函數傳遞到另外一個函數,這兩個函數就能使用同一數據。
2、利用指針,能在程序執行過程中預留新的內存空間
大多數情況下,可以看到程序使用的內存是通過顯式聲明分配給變數的內存。但是在很多應用場合中,可能程序運行時不清楚到底需要多少內存,使用指針可以讓程序在運行時獲得新的內存空間,並讓指針指向這一內存更為方便。
3、指針可以用來記錄數據項之間的關系
在高級程序設計應用中,指針被廣泛應用於構造單個數據值之間的聯系。比如,程序員通常在第一個數據的內部表示中包含指向下一個數據項的指針(實際上就是鏈表了),來說明這兩個數據項之間有概念上的順序關系。
⑺ 求C語言中指針--p是什麼意思
它裡面存儲的數值被解釋成為內存里的一個地址。要搞清一個指針需要搞清指針的四方面的內容:指針的類型,指針
所指向的類型,指針的值或者叫指針所指向的內存區,還有指針本身所佔據的內存區。讓我們分別說明。
先聲明幾個指針放著做例子:
例一:
(1)int *ptr;
(2)char *ptr;
(3)int **ptr;
(4)int (*ptr)[3];
(5)int *(*ptr)[4];
如果幫到你,請選為滿意答案吧!!!
有什麼不懂的可以Hi我哈,大家一起學習哈.
消息來源:華夏聯盟
⑻ c語言指針*p中p++什麼意思
**p :二級指針,表示p所指向的地址裡面存放的是一個指向類型的指針。
*p:一級指針,表示p所指向的地址裡面存放的是一個類型的值。
(8)c語言指針p擴展閱讀:
指針變數可以進行加減運算,例如p++、p+i、p-=i。指針變數的加減運算並不是簡單的加上或減去一個整數,而是跟指針指向的數據類型有關。
給指針變數賦值時,要將一份數據的地址賦給它,不能直接賦給一個整數,例如int *p = 1000;是沒有意義的,使用過程中一般會導致程序崩潰。
使用指針變數之前一定要初始化,否則就不能確定指針指向哪裡,如果它指向的內存沒有使用許可權,程序就崩潰了。對於暫時沒有指向的指針,建議賦值NULL。
兩個指針變數可以相減。如果兩個指針變數指向同一個數組中的某個元素,那麼相減的結果就是兩個指針之間相差的元素個數。
數組也是有類型的,數組名的本意是表示一組類型相同的數據。在定義數組時,或者和 sizeof、& 運算符一起使用時數組名才表示整個數組,表達式中的數組名會被轉換為一個指向數組的指針。