1樓:匿名使用者
當然可以了. 只是約定成0 等於 空指標是乙個習俗一樣.
你如果寫乙個程式. 裡面統一約定成=2 是空指標也可以啊.
只是某些地方你判定乙個指標是否有效要麻煩一些.
c語言中 int *p=null; 則這條語句是不是錯的? *p=0
2樓:匿名使用者
前面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的值*/
這樣是可以的。
3樓:匿名使用者
沒錯,這是定義乙個指標變數p,並賦值為空,用以說明該指標沒有任何指向性。
該指標的值為null在儲存單元中的指向為0,也就是不指向任何位址。單看這一條語句的話,是沒有意義的。
4樓:匿名使用者
p賦為null,之後再賦值是可以的,但*p=0,本身就有問題
5樓:非常可愛
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;
c語言中 int *p=a[0] 這樣表達對不對
6樓:待月上弦
這個表示式沒有語法錯誤,但是我估計不能達到你想要的結果,不知道你要表達什麼。給你分析下這個表示式的含義,這裡a[0]應該表示乙個位址,把這個位址賦給p,然後*p表示a[0]位址所指向的內容。我估計你的a是乙個一維陣列,你可能是想讓指標p指向a[0]這個元素,如果是這樣,則表示式應該改為int *p = &a[0]。
但是如果a是乙個二維陣列,則這個表示式有意義,沒有任何問題!
7樓:月光疾風
不對,因為p是指標,因此只能對應a[0]的位址,a[0]前面加個取位址符:
int *p=&a[0];
8樓:茜灬一
差不多,就是a應該是int陣列
c++中,int *p=new int是可有可無的嗎?
9樓:匿名使用者
int *p = new int;
是在堆中給變數分配了乙個空間,當用完後需要手動釋放。可以使用delete()函式
如果沒有int *p = new int; 是不能給p進行賦值的 因為沒有分配空間。
你也可以使用malloc分配空間,但最後釋放的時候要使用free()函式
10樓:匿名使用者
如果是int * p;
*p = 0;
那麼結果是不可預知的,可能正常執行,也可能立即崩潰,或者在任何無法預知的時候出現任何無法預知的問題。
如果是int t;
int * p=new int;
p = &t;
將會造成記憶體洩漏,如果多次出現這樣的情況,將會導致程式可用的記憶體越來越少。
11樓:千江月
不是可有可無的,得看你如何使用
舉例:1、 int *p = new int;
*p = 5;
此時p沒有空間必須申請
2、int a = 5;
int *p;
p = &a; //p不用重新申請空間,它指向a的空間。。
12樓:匿名使用者
看你對p賦值是什麼意思了。
如果說讓p指向另外乙個int *指標可以。
但是如果說你要 *p =1或者什麼就不行了。
必須得new int分配空間
c語言中*p=0表示?
13樓:
也得看p的定義了
如果int *p;*p=0;則是把p執行的int空間的值修改為0如果int **p;*p=0;則是把指向int空間的指標置為0。
上面這幾個例子,都得考慮p是否指向了有效記憶體位置,否則是危險的操作。
完整的範例:
int a;
int *p=&a;
*p=0;
相當於p指向的int空間,即a的值被改為0了如果p是更多級的指標或是指向更複雜的記憶體,可以把一級指標之外的內容看成乙個整體,比如:
int **p;
可以先 typedef int *intpointer;
intpointer *p;
然後*p=0;
就是把p指向的intpointer空間的值置為0.
諸如此類。
14樓:匿名使用者
int i,*p=&i;
*p=0; //這個相當於i=0;
15樓:匿名使用者
約定c/c++ 語言中 指標的初始化 為 null
而 null被定義為 (void *)0
16樓:匿名使用者
*p 首先p是個指標,*相當於對位址進行解引用,*p也就是指標指向的物件,對他進行賦值為0,就是對指標指向物件賦值為0
17樓:匿名使用者
考慮p是否指向了有效記憶體位置:
p所指向的變數的值賦值為0
18樓:_____一葉障目
表示指標p所指向的變數的值賦值為0
C問題,13題為什麼選A,這題為什麼選C
因為 在結構體中 只有a中的定義方式是正確的 bcd 都有錯誤 結構體具體定義方式可以參考書籍 這題為什麼選c 選c。觀察題目,每幅圖里有且只有兩個面積相等形狀相同的圖形 如下圖所示 d項中間那兩個梯形面積肯定不相等,因為左右兩邊的長方形的寬都不相等。23題為什麼不選b選c。實驗b只能證明二氧化塘不...
c語言問題,17題為什麼答案是double不是float,這兩個有什麼區別
sqrt函式返來回值是double。表達源式包含隱性轉換,規則就是盡量保證資料精度不丟失。對程式設計人員來說,double 和 float 的區別是double精度高,有效數字16位,float精度7位。但double消耗記憶體是float的兩倍,double的運算速度比float慢得多,c語言中數...
C語言問題為什麼選B過程求解大學C語言,為什麼選B,求解!
首先 是轉義字元,所以 的結果就是 其次,7s是指輸出字串佔7位,所以前方有空格。7s意思就是輸出後抄面的字串,襲 長度7 這裡如果bai7小於後du面字串長度則沒什麼意zhi義,dao還是按字串原樣輸出,如果大於後面字串,則會在字串前補空格 字串原本的雙引號是不會輸出的。所以a和c都不對,是轉義符...