當前位置:首頁 » 編程語言 » c語言p

c語言p

發布時間: 2022-01-09 11:51:33

1. c語言中%p是什麼意思

格式控制符「%p」中的p是pointer(指針)的縮寫。指針的值是語言實現(編譯程序)相關的,但幾乎所有實現中,指針的值都是一個表示地址空間中某個存儲器單元的整數。printf函數族中對於%p一般以十六進制整數方式輸出指針的值,附加前綴0x。

%p是列印地址的, %x是以十六進制形式列印, 完全不同!另外在64位下結果會不一樣, 所以列印指針老老實實用%p 。

(1)c語言p擴展閱讀:

%x同樣輸出16進制形式,不過%x對應的是int型,也就是說,其輸出長度與系統int型占的位元組數相等回。如32位編譯器,int型佔4位位元組,那麼%x輸出的結果最多為16個16進制字元。

而%p輸出寬度取決於系統地址匯流排位數,即16位最多輸出4位16進制字元,32位最多輸出8位16進制字元,64位最多輸出16位16進制字元。

2. c語言中p*是什麼意思,他和*p的區別是什麼

p*
如是出現在算術表達式中,這個星號就是乘號,表示相乘,如果是出現在聲明中(如變數定義),那就表明p是一種數據類型,p*表示要聲明這種類型的指針變數。

*p
依然可以表示相乘的運算,也可表示提取p指針指向的位置保存的值。例如:

int a=9;
int *p=a;

printf("%d",*p);
這個printf()調用中的*p表示提取p指針指向的地址(即變數a的地址)保存的值(即變數a的值)

3. C語言中p->x是什麼意思

C語言中p->x是結構體指針變數p引用結構體成員x的方式。
結構體指針變數引用結構體成員用箭頭(->)
非」結構體指針「變數引用結構體成員用點(.)
如:
struct test {
int x;
char str[100];
} ;
struct test data={1,"test"}; //定義一個結構體變數Data,並初始化
struct test *p ; //定義結構體指針
p=&data; //指向data變數
printf("x=%d\n", data.x ); //輸出1
p->x = 5 ; //通過指針引用成員,給data中的x賦值為5
printf("x=%d\n", data.x ); //輸出5

4. C語言p和&p的區別

如圖所示,按道理在學匯編後會懂得的

5. c語言*&p和&*p怎麼算的他們有什麼不同

1、*&p 等價於*(&p)。
2、&*p 等價於&(*p)。

舉個例子:

p是int變數,那麼*&p = p,而&*p是非法的。因為*p非法。

p是int *指針變數,那麼*&p = p,&*p = p,都是p。

6. 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*/

}

7. c語言中,p.和p->有什麼區別

p. p是類的對象,點後面要跟類中的元素,這樣就完成了類裡面元素的調用,元素可以是變數也可以是函數。
p->是傳地址,比如說有另一個變數a,你p->a就把p的地址也給a了

8. c語言 p什麼意思

p是一個指針,printf("%d",*p++) 和printf("%d",*(p)++)沒區別,都是輸出比p指針所指向的數的地址大1的地址的數,若改為(*p)++則不一樣了,就成了輸出比p指針所指向的數大1的數。

9. 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;

(9)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。

10. 在c語言中p*=i是什麼意思啊

*=是C語言的特殊操作符號,調用形式為
a*=b;
其等效於
a=a*b;
但是用*=的形式,可以減少代碼輸入,同時還可以提高運行效率。
p*=i也就是p=p*i, 即將原始的p值與i值相乘, 結果賦值給p。

C語言中類似的符號還有+=, -=, /=, %=, ^=, |=, &=等等。

熱點內容
寫php的軟體 發布:2024-12-28 21:11:41 瀏覽:644
linux軟體安裝包 發布:2024-12-28 20:54:05 瀏覽:131
編程回消息 發布:2024-12-28 20:52:15 瀏覽:928
bat腳本卸載軟體 發布:2024-12-28 20:17:14 瀏覽:743
sqlserver的ip 發布:2024-12-28 20:16:58 瀏覽:359
c語言模塊 發布:2024-12-28 20:10:29 瀏覽:517
安卓螞蟻怎麼唱 發布:2024-12-28 20:00:21 瀏覽:163
編程課必須 發布:2024-12-28 19:58:49 瀏覽:782
怎麼合理配置家庭資產 發布:2024-12-28 19:57:10 瀏覽:317
編譯pl2303安卓驅動 發布:2024-12-28 19:53:09 瀏覽:365