當前位置:首頁 » 編程語言 » c語言p的指針名
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言p的指針名

發布時間: 2022-12-07 11:30:27

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語言中 指針各個符號的含義int *(*p)();

*作為定義的時候,是一個左結合操作符,優先跟其左邊的描述相結合
int
*
:
整型指針
(*p)
:
用括弧調整優先順序,強迫其與p作結合,表示p是一個指針類型(否則此處p應與"()"結合作為一個函數,而該"*"則應跟左邊的"int
*"結合作為"int
**"整型指針的指針)
如此,相應的我們就很容易解釋其他的如:
int
*
整型指針
int
**
整型指針的指針
int
*
a[n]
整型指針數組
int
(*a)[n]
整型數組的指針
int
(*a)(int)
需求整型參數且返回整型數的函數指針
...
搞懂了符號優先順序就很容易理解了,另外有些符號優先順序是跟編譯器有關的,即標准中未定義行為(UNDEFINED
BEHAVIOR),盡量不要在程序中使用這種語法。

⑶ c語言 指針概念問題

我把我的理解跟你說下吧。

int *p; //在定義(或者聲明)指針變數時,變數p前面的「*」只是用來說明變數p是個指針變數而不是一個整型變數,int是指這個指針變數指向的是int類型的內存地址,指針本質上就是地址,任何類型的指針變數在內存中都是佔用4個位元組的存儲空間的(即32位二進制數),既然指針變數存放的地址值都是32位的,那為什麼還要區分類型呢?這是為了方便指針變數的運算。舉例說明,

int*pn;//定義了一個指向整型的指針變數
char*str;//定義了一個指向字元型的指針變數
//假設,pn和str的初始值都是0x1000
pn++;//pn自增加1,pn的值為0x1004,因為int類型是佔4個位元組的,指向了下一個int類型的內存首地址
str++;//str自增加1,str的值為0x1001,因為char類型是佔1個位元組的,指向了下一個char類型的內存首地址

那麼,從上面的例子,我們就可以知道,指針變數前面加上類型,是為了方便指向該類型的變數的內存空間,那麼就可以通過該類型的指針變數來訪問它所指向的內存空間的數據。

int*類型的含義是:變數p是指針變數名,而不是*p這個整體,*在定義指針變數的時候只是起說明的作用,int*不是一個整體,這點你要記住,說p是int*型指針,是為了方便而簡寫的形式,這里的*只起一個標記說明的作用而已,每定義一個int類型的指針變數,前面都要加*。

int *p,*q; //定義了兩個指向整型變數的指針變數

int *p,q; //p是指針變數,而q是普通的變數

希望對你理解有所幫助吧。

⑷ C語言指針**p是什麼意思

**p表示p也表示地址,簡單的說,這個地址對應的存儲單元存儲的數也是一個地址,而不是數值,而這個被存儲的地址對應的存儲單元存儲的數據才是真正的相應類型的數值!

例如:

int i=10; //定義了一個整型變數

int *p=&i; //定義了一個指針指向這個變數

int **p1=&p; //定義了一個二級指針指向p指針

那麼取出10的值方式為:

printf(「i=[%d] 」,*p);

printf(「i=[%d] 」,**p1);

(4)c語言p的指針名擴展閱讀:

指針與數組關系

指針數組:就是一個由指針組成的數組,那個數組的各個元素都是指針,指向某個內存地址。char *p[10];//p是一個指針數組

數組指針:數組名本身就是一個指針,指向數組的首地址。注意這是一個常數。

example:

char (*p)[10]//p是一個數組指針

函數指針:本身是一個指針,指向一個函數入口地址,通過該指針可調用其指向的函數,使用函數指針可實現回調函數。

⑸ C語言指針

在循環里, 可以看出 p[2]=&a[2*4], 所以 p[2]=&a[8]
也就是說p[2]是指向a數組中第9個元素的指針
p[2]+1就是將指針向後移動一個單位, 即指向a數組第10個元素(相當於&a[9])
括弧前面的星號是從地址中取得對應值, 也就是10

⑹ 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。

⑺ 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也能代表指針 *號起到什麼作用

int*p;//聲明中的*表示指針
int**p1;//表示指針的指針,單獨看*p1的類型,其實就是int*和p是一個類型
intn;
n=*p//「=」右邊的*表示解引用
*p1=p;

⑼ c語言高手進:P為指針變數名,n=6,*(p=&n)表示什麼意思

p=&n
這句把n的地址給p
這時p就是n的地址
然後在
*
這個地址
所以*(p=&n)也是就n的值
輸出6