c語言裡intpifpnull和ifpnull有什麼

2021-03-26 02:27:01 字數 6963 閱讀 8458

1樓:

帶*號是取值的意思,即取指向位址的值。

所以if(*p == null)是判斷指標p指向的位址儲存的值是否為null

if(p == null)是判斷指標p是否指向null希望對你有幫助。

2樓:聽不清啊

int *p;的話,

*p是乙個int值,所以,if(*p==null)是不對的。

3樓:匿名使用者

不理解慢慢理解。用腦子。。。。。

c語言中int *p=null是什麼意思

4樓:非常可愛

c語言中

int *p=null意思是:抄

c語言襲中p裡面是隨機值,在int *p=null,這個p是有值的,為null;

int *p=null指向乙個空指標,等於 int *p=0; null等於0;

可以隨時讓這個p指向其他位址。定義指標,將它初始化為null,這樣做程式設計更規範。

擴充套件資料

*p = null的作用

代表對乙個由指標p指向的變數(什麼型別,不知道),賦值為0,是將那個變數賦值為0。

int *p;

*p = null;

第一行**,定義了乙個指標變數p,其指向的記憶體裡面儲存的是int型別的資料;但是這時候變數p本身的值是多少不得而知,也就是說現在變數p儲存的有可能是乙個非法的位址。

第二行**,給*p賦值為null,即給p指向的記憶體賦值為null;但是由於p指向的記憶體可能是非法的,所以除錯的時候編譯器可能會報告乙個記憶體訪問錯誤。這樣的話,可以把上面的**改寫,使p指向一塊合法的記憶體:

int i = 10;

int *p = &i;

*p = null;

5樓:衄潲

樓上bai說的都對,看來你是新du手,建議你去看林銳zhi

的《高質量daoc++》,這本書,內你一定會喜歡的,因容

為他對於入門者來說特別好,他會給你講正確的程式設計規範是什麼。其中那塊講指標的部分就寫了,定義指標,一般先給初始化,用null來初始化它,避免野指標。你這裡說的int *p,這個p裡面是隨機值,而int *p=null,這個p是有值的,為null.

這其實對程式也沒有啥貢獻,在後面你也可以隨時讓這個p指向別的位址。定義指標,順便將它初始化為null,這樣做程式設計更規範。

if(p==null)啥意思和struct link *p=null有啥區別c語言

6樓:岔路程式緣

if(p==null)是選擇

復語句,括號內是判斷p與

制null的值是否相等的邏bai輯運算表示式;

struct link *p=null是定義語句,du它定義p是指向自定zhi義p為乙個結構dao體型別link型的乙個指標,並讓它指向null(空)。

==是邏輯運算子(相等)

=是賦值符

int *p=null 和int *p ;p=null 和*p = null 這三個的區別

7樓:匿名使用者

第一種bai是定義乙個int型指標,並du給它初始化為zhinull,也就是個空指標,沒有dao指向任何地方,就是個空內的。容

第二種是定義乙個int型指標,然後給指標賦值為null,指標指向null位址。

第三種是給指標的值賦值為null,也就是給指標指向的內容賦值為0(也就是為空)。

8樓:匿名使用者

第乙個定義乙個指向變數null的指標p;第二個是定義乙個指標p,但沒有被配記憶體;其中p=null為非法賦值,會出錯;第三個式子中p為指標,通過*p運算說明指標p所指向位址內容是變數null。

9樓:匿名使用者

不知道你是c還是c++,就c++來說吧!int *p=null是整型指標指向空,

就是什麼也沒有但這樣是

版安全的,int *p指宣告指標並未初始權化指標可能指向不知道的地方,null在c++也指能以指標來理解吧!

10樓:匿名使用者

第乙個是將空值付給整形指標變數p 第二個是定義乙個整形指標p 然後將空值付給p 第三個是 將乙個空值付給指標p 希望對你有幫助,請採納。

請問if(p!=null)與if(p)這兩個條件語句有什麼區別?我在vc中執行時第一種寫法會出錯,第二種寫法執行成功 10

11樓:匿名使用者

if(p!=null)與if(p) 的意思是一樣的,都是說p不是0時為真

null 是個巨集,其值為0 如果你程式出錯,可能是你沒有引用相應的標頭檔案

#include

12樓:

p 是指標。c++ 定義

#define null 0

c 定義

#define null ((void*) 0)p 是指標,p 要初始化。

if(p) -- p 為 0 等於假。非0 等於真版if(p!=null) 條件成立為真權,不成立為假如果 while(p!

=null 沒錯,if(p!=null) 也應當沒錯

你的錯誤資訊圖形看不清。

13樓:主頁

這兩個實現結果一樣,但有點區別,p!=null 返回的是bool值。

你需要定義 define null 0

c語言 為什麼int *p=null;*p=&n;對,而int *p=null;*p=*q;不對

14樓:匿名使用者

因為你的p指向的是null,*p是給null的位址賦值操作,當然是不可能的。

c語言中 int *p=null; 則這條語句是不是錯的? *p=0

15樓:匿名使用者

前面int *p=null;就是定義bai乙個du空指標。zhi但後面*p=0;可以正

dao常執行的前提,是這個p指標指向了內乙個合法記憶體空間容。

譬如:int a;

int *p=null;

p=&a;    /*p指向變數a的位址*/*p=0;    /*這裡的意思就是把0寫入p指向的記憶體空間,也就是變數a存放的空間,這樣就改變了變數a的值*/

這樣是可以的。

16樓:匿名使用者

沒錯,這是定義乙個指標變數p,並賦值為空,用以說明該指標沒有任何指向性。

該指標的值為null在儲存單元中的指向為0,也就是不指向任何位址。單看這一條語句的話,是沒有意義的。

17樓:匿名使用者

p賦為null,之後再賦值是可以的,但*p=0,本身就有問題

18樓:非常可愛

c語言bai

中int *p=null意思是:

c語言du中p裡面是隨機值,在zhiint *p=null,這個p是有值的,dao為null;

int *p=null指向乙個空指標專,等於屬 int *p=0; null等於0;

可以隨時讓這個p指向其他位址。定義指標,將它初始化為null,這樣做程式設計更規範。

擴充套件資料

*p = null的作用

代表對乙個由指標p指向的變數(什麼型別,不知道),賦值為0,是將那個變數賦值為0。

int *p;

*p = null;

第一行**,定義了乙個指標變數p,其指向的記憶體裡面儲存的是int型別的資料;但是這時候變數p本身的值是多少不得而知,也就是說現在變數p儲存的有可能是乙個非法的位址。

第二行**,給*p賦值為null,即給p指向的記憶體賦值為null;但是由於p指向的記憶體可能是非法的,所以除錯的時候編譯器可能會報告乙個記憶體訪問錯誤。這樣的話,可以把上面的**改寫,使p指向一塊合法的記憶體:

int i = 10;

int *p = &i;

*p = null;

char *p=null; if((p=(char *)malloc(0))==null),第二條語句什麼意思??

19樓:gta小雞

當malloc函式引數為0時,系統仍會開闢記憶體空間並將乙個有效的位址返回給指標p,但p所指的記憶體空間不可用。通常不會返回null到指標p,除非已經沒有可用的記憶體空間。這個**似乎沒有意義。

20樓:匿名使用者

就是申請一塊堆記憶體唄,賦值給p

21樓:匿名使用者

內0,還是會返回乙個有容效指標

返回指標為null的條件是申請一定大小記憶體,記憶體空間不夠的時候

層次遍歷二叉樹的c語言**中 if(bt==null) return; front=-1;rear=0;這是什麼意思?

22樓:手機使用者

#include

#include

typedef char datatype;

typedef struct bitnode

tree;

tree *init()

tree *create(tree *bt)

else

return bt;

}tree *linsert(datatype x,tree *parent)

if((p=(tree*)malloc(sizeof(tree)))==null)

return null;

p->data=x;

p->lchild=null;

p->rchild=null;

if(parent->lchild==null)

parent->lchild=p;

else

return parent;

}tree *rinsert(datatype x,tree *parent)

if((p=(tree*)malloc(sizeof(tree)))==null)

return null;

p->data=x;

p->lchild=null;

p->rchild=null;

if(parent->rchild==null)

parent->rchild=p;

else

return parent;

}tree *ldel(tree *parent)

p=parent->lchild;

parent->lchild=null;

free(p);

return parent;

}tree *rdel(tree *parent)

p=parent->rchild;

parent->rchild=null;

free(p);

return parent;

}void visit(tree *bt)

void preorder(tree *bt)

void inorder(tree *bt)

void postorder(tree *bt)

tree *search(tree *bt,datatype x)

return p;

}void nrpreorder(tree *bt)

if(top<0)

return ;

else}}

void nrinorder(tree *bt)

if(top<0)

return ;

else}}

void nrpostorder(tree *bt)

dd=stack[top];

if(top>-1)

if(dd)

else }}

void levelorder(tree *bt)

if(queue[front]->rchild!=null)}}

int countleaf(tree *bt)

int main()

}else printf("the char dose not exist\n");

break;

case 3:

printf("1、recursive 2、nonrecursive\n");

printf("do: ");

scanf("%d",&t);

if(t==1)

preorder(bt);

else

nrpreorder(bt);

printf("\n");

break;

case 4:

printf("1、recursive 2、nonrecursive\n");

printf("do: ");

scanf("%d",&t);

if(t==1)

inorder(bt);

else

nrinorder(bt);

printf("\n");

break;

case 5:

printf("1、recursive 2、nonrecursive\n");

printf("do: ");

scanf("%d",&t);

if(t==1)

postorder(bt);

else

nrpostorder(bt);

printf("\n");

break;

case 6:

levelorder(bt);

break;

case 7:

printf("%d\n",countleaf(bt));

break;

case 0:break;

default : printf("input error\n");

}printf("\n");

}return 0;}

問下c語言裡yz是什麼意思翱,問下,c語言裡x y z是什麼意思啊?

1 x y z y y z 2 x y x 2 3 5 printf x y 5 2 錯誤,所以結果是0 2 z y x 3 y x 3 5 3 x x 6 z y 15 printf y z,15 15 正確,結果為1 x 6 結果為6 所以輸出1,6 3 x y z 5 首先要知道運算子 是左結...

C語言程式設計裡aaveaaveas

a ave a ave a s i 是引用成員的意思 a這個指標裡面有成員ave,還有s陣列,這樣才能像上式那樣引用相當於是 x a ave y a s i x x y a ave x ave ave p s在c語言中什麼意思 這是乙個賦值語句,將ave加 p s 的和自賦值給ave這裡我無法推斷a...

c語言裡的FOR原理,C語言中巢狀迴圈的執行原理是什麼(詳細點)應注意什麼細節?

親,是for語句迴圈一次就操作一次,因為它是for語句的乙個巢狀語句,功能就是計算1 2 3 100的值。如果改成 for i 1 i 100 i i sum sum i 那麼就是你說的第二種情況了,即迴圈到for結束才把i的值帶入進去給sum賦值,此時for迴圈的語句體為一空語句。望能幫到您啊!對...