請問下if p 什麼意思啊,if(!p)是什麼意思?

時間 2021-06-25 14:45:00

1樓:匿名使用者

看你的**,猜測fun函式的返回值的型別是:char *

char *p ;表示定義了一個char型指標變數 ,它指向一個地址,一個地方,在這裡儲存了一個或者著一串char型資料。當然,我們也可以讓p指向一個空地址null,表示這裡沒有儲存任何東西,程式不能從這裡得到任何有用的資料。

在 p = fun(s,t)後,為什麼要有一個判斷if(p)呢。因為是fun返回的,而fun很有可能返回null,所以要加入判斷。這樣的例子很多 比如使用malloc進行記憶體分配的時候,也要判斷返回值得。

因為malloc有可能會失敗,而失敗就返回null。

printf("\nthe result is:%s\n", p); (還有這裡p不是地址麼?能用嗎?)

p是個地址,這個地址表示了p指向的字串的開始位置。而printf函式會把p的字串全部列印出來。

你可以做個試驗,看看結果

printf("\nthe result is:%s\n", *p);

可能你會理解的更深刻些。

希望對你有所幫助

2樓:

通常p = fun(s, t)後,如果成功p將有效,不是空,否則p將為空指標。在c語言裡,空,也就是null,對峙數值是0的指標,#define null (void*)0。因此你按if(p!

=0)理解也算對,更好的理解是if(p != null)。 p=null和*p=0是不同的概念,p=null表示p是空指標,而*p=0表示p指標指向的資料是0(p不為null)。

printf("\nthe result is:%s\n", p); %s含義是列印p指向的字串,而我們知道,字串在c裡面的表達形式就是指向字元的指標char*,而p就是這樣的型別。

3樓:匿名使用者

fun不貼出來不行啊。。。if()條件判斷,裡面引數只有兩種情況,true or false,如果fun()的返回值是一個bool型,那麼只要返回值為true就執行,還有一種,就是返回值不是bool型,非0即為真

4樓:匿名使用者

如果p的值為0,就不執行語句,訊息來自華夏聯盟

5樓:匿名使用者

首先要知道系統內部定義:

#define null 0

if(p) 等價於if(p!=null)

6樓:鐳毅

if (p) //如果指標p不為空

printf("\nthe result is:%s\n", p); // (還有這裡p不是地址麼?能用嗎?)對頭,p就是地址。

else

printf("\nnot found!\n");

if(!p)是什麼意思?

7樓:蜜煉柚子茶

!是非,就是判斷!p的值,如果p為0執行if語句,如果if不為0,不執行if語句

while(p)和if(p)的具體意思是什麼?

8樓:專業治骨病

while(p) 和if(p)在這裡的意思差不多。

都是當p不為空的是指執行後續語句。

等價於 while(p != null ) if (p != null)。

在**中你還可以看到類似這樣的寫法。

while(!p) if(!p)。

這個就是當p為空的時候才執行後續的語句 。

等價於while(p == null ) if (p == null )。

c語言中if (! p )是什麼意思?急!!

9樓:匿名使用者

c語言中%p用來輸出指標型別自身的值。

也就是說 %p用來輸出地址。

一、使用方法:

%p一般僅用於printf及同類函式中。形式為printf("%p", varp);

其中後續引數varp為某一個指標變數。如

int a,*p;

p=&a;

printf("%p %p", p, &a);

這裡輸出的p和&a都是int*型。

二、功能:

%p格式符會輸出指標本身的值,也就是指標指向的地址值。

該輸出為16進位制形式,具體輸出值取決於指標指向的實際地址值。

三、與%x區別:

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

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

所以用%p輸出地址,相對於用%x輸出,可以有更好的移植型和適應性,不會因為更換平臺而引起錯誤。

10樓:匿名使用者

!是取反的邏輯運算,如果p不等於0,則!p為假,p等於0,則!p為真,

參考**如下:

#include

main()  else

p=5;

printf("p=%d\n",p);

if(!p)  else

}執行效果如下:

11樓:匿名使用者

c語言中if()是條件判斷語句,其中括號裡的值如果是0的話不成立,非0的話成立。

c語言中!是非的意思,!p也就是非p。

所以這行**的意思就是如果p成立就不執行if後的**,p不成立則執行if後面的**。

12樓:使用者名稱都是渣渣

等價於if(p==0)

c語言中,(p為一個指標),語句if(!p)是什麼意思?能給一個簡單例子嗎?

13樓:匿名使用者

!p意思就是 非p,

如果p的值為0,!p判定為真;

如果p的值不是0,!p的判定為假

現在一個指標,指標有內容,即:p的值不是0,!p的判定為假如果指標沒有內容,null,即:p的值為0,!p判定為真;

14樓:

在沒有得到有效記憶體的情況下p=null

if(!p)就相當於if(p!=null)

一般用來判斷申請記憶體是否成功

15樓:匿名使用者

通常指標在未應用時為避免誤用會賦null,空值。指標很危險。

16樓:匿名使用者

是否申請成功和釋放前的判斷。

if(*p)和if(p)有區別嗎?有什麼區別?p是指標變數。

17樓:亞狼黑客

if(*p)是判斷指標p所指向地址存放中的值;而if(p)判斷指標p本身是否為空。

c語言if p 0是什麼意思啊,C語言中if ( p )是什麼意思?急 !

if p 0 表示 char指標指向的字串的第一個字元等於 為真的時候 else t 1 將t賦值為1應該是一個方法來的吧?貌似是檢測 一個字串第一個字元是否為 如果是則char p 的首地址指向下一個字元,字串的長度減1 及時澍雨 if p 0 判斷p 0 是否為字元 else t 1 否則if的...