前言
在C語言中,指針是非常重要的概念。指針是一個變量,其值為另一個變量的地址。使用指針可以直接訪問內存中的數據,這使得C語言非常靈活和強大。在學習C語言時相比大家都已經知道了&和*的區別了,但你知道*&p和&*p又代表什么嗎?
寫個測試程序
下面是一個簡單的C語言代碼,可以用來演示上面提到的幾個標識符,讓我們更好的理解幾個標識符的意義:
#includeintmain(){ inta=10; int*p=&a; int**pp=&p; printf("a=%d ",a);//打印a的值 printf("&a=%p ",&a);//打印a的地址 printf("p=%p ",p);//打印p的值,即a的地址 printf("*p=%d ",*p);//打印p所指向的變量的值,即a的值 printf("&p=%p ",&p);//打印p的地址 printf("*pp=%p ",*pp);//打印pp所指向的指針變量p的值,即a的地址 printf("**pp=%d ",**pp);//打印pp所指向的指針變量p所指向的變量的值,即a的值 printf("&pp=%p ",&pp);//打印pp的地址 printf("*&p=%p ",*&p);//打印p的值,即a的地址 printf("&*p=%p ",&*p);//打印p的地址 return0; }
下面,我們來運行一下這個程序,看看輸出結果:
a=10 &a=0x7fff87a4ce94 p=0x7fff87a4ce94 *p=10 &p=0x7fff87a4ce98 *pp=0x7fff87a4ce94 **pp=10 &pp=0x7fff87a4cea0 *&p=0x7fff87a4ce94 &*p=0x7fff87a4ce94
這個程序定義了一個整型變量a,一個指向整型變量的指針p,一個指向指針變量p的指針pp。程序輸出了上面提到的幾個標識符所代表的值或地址。運行這個程序,可以看到它的輸出結果,從而更好地理解這些標識符的含義。
從上面的運行結果可以看出*p打印的是a的值,也就是p指向變量的值,這點是毋庸置疑的,想必大家也都知道,那我們一起來看看其他的變量分別代表什么意思吧!
p:指針變量名。在定義指針變量時,需要指定指針所指向變量的數據類型。例如,int *p; 定義了一個指向int類型變量的指針變量p。
*p:解引用操作符。它用于訪問指針所指向的變量的值。例如,*p = 10; 將10賦值給p所指向的變量。
&p:取地址操作符。它用于獲取指針變量p的地址。例如,int *p; int **pp = &p;定義了一個指向指針變量p的指針變量pp。
*&p:這個操作符等價于p。它首先將p取地址,然后再將其解引用,得到p本身的值。
&*p:這個操作符等價于p。它首先將p解引用,得到p所指向的變量的值,然后再將其取地址,得到p本身的地址。
小結
a和*p輸出的,都是變量a的值。
&a和p輸出的,都是a的地址。
&*p和*&p其實都是p,也就是a的地址。
審核編輯:劉清
-
C語言
+關注
關注
180文章
7608瀏覽量
137111
原文標題:C語言指針p、*p、&p、*&p、&*p符號分別代表什么意思?
文章出處:【微信號:mcu168,微信公眾號:硬件攻城獅】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論