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迴圈的語句體為一空語句。望能幫到您啊!對...