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的...