1樓:匿名使用者
ls錯誤。陣列是陣列,本身不是指標;陣列退化為對應指標僅在傳遞函式引數等少數情形下成立——而且這些情況下,陣列本身不變,只是另外構造了乙個和指向陣列首元素的指標(這樣陣列和指標的值相等)而已。
指標無論是在編譯期還是在執行期都不包含指向的物件的型別資訊。對於sizeof,是在編譯期計算的,只有對於陣列名稱或&陣列名稱直接作用才能體現陣列左值語義而返回整個陣列的大小,對於指向陣列首位址的指標而言,和其它指標一樣仍然只返回指標本身的大小。
例如char a[10] = ;
char* p = a;
char* q = &a[2];
sizeof(a); /* 結果為10*/sizeof(&a); /* 結果為10*/sizeof(p); /* 結果在32位平台上為4*/sizeof(q); /*結果等於sizeof(p)*/所以,結論是無法通過指標本身判斷指向物件的型別以及所佔空間的大小。所以,老老實實另外儲存乙個標誌變數或者長度(0為非陣列)來判斷比較穩妥(如果是結構體變數,也可以用乙個成員作為標誌變數,不過比較浪費就是了)。
====
[原創回答團]
2樓:匿名使用者
沒辦法直接判斷,因為指標本身是不包含那些資訊的,它只描述乙個位址,sizeof()函式也只是能判斷字元陣列,也是根據字元陣列最後乙個符為null判斷的,如果不將最後乙個字元設為null也就沒有效果。sizeof()函式好像不能用於單個字元變數,如果沒猜錯。如果要判斷就只能另用變數作記錄了。
3樓:葉葉葉
陣列的sizeof值等於陣列所占用的記憶體位元組數,如:
char a1 = "abc";
int a2[3];
sizeof( a1 ); // 結果為4,字元 末尾還存在乙個null終止符
sizeof( a2 ); // 結果為3*4=12(依賴於int)
4樓:匿名使用者
這個是沒法直接判斷出來的,只有跟蹤**通過賦值時的語句來間接判斷。
怎樣區分陣列變數和指標變數?就是怎麼樣區分乙個變數可不可以使用sizeof語句?
5樓:匿名使用者
沒有陣列抄變數這一說法吧,lz你想問的是陣列名和指標的區別吧?
比如 char a[10] = "hello";
char *p = a;
這裡a是陣列名,p是指標變數。其實很好區分,只要看它的定義就行了啊。
對陣列名進行sizeof運算結果就是整個陣列占用位元組數,對指標進行sizeof運算的結果就是機器的字長(32位機器字長為4)。
有一種情況例外,就是當把陣列名作為函式形參時,在函式體內編譯器其實是將該陣列名當做指標的。例如:
#include
#include
int function(char a);//以陣列名為形參int main()
int function(char a)
最後的結果是
6 4 4
6樓:驀然回首之際
指標變數裡存的是指標,其他變數存的都是資料。
如何檢測指標指向陣列的大小?
7樓:匿名使用者
包含標頭檔案#include 然後在main函式中呼叫int t = _msize(ss);t就是整個陣列大小(int型是4個byte,所以輸出是40)t除以4就是陣列的容量
8樓:匿名使用者
int *a=new int(120);
申請乙個整型變數空間,賦初值為120,並定義乙個整型指標a指向該位址空間
int *a=new int[120];
申請120個整型變數空間,沒有賦初值,並定義乙個整型指標a指向該位址空間開始處
int *a=new int(n);
申請乙個整型變數空間,賦初值為n,並定義乙個整型指標a指向該位址空間 你的指標並沒有指向陣列,大小是無窮的,這時候去計算大小會造成陣列越界,最終返回值為4
如何判斷酸奶是發酵的,還是勾兌的
在超市買來盒裝或袋裝酸奶,然後將牛奶和買來的酸奶混合,用酸奶機等方法進行再次發酵製成酸奶,也就是所謂的 勾兌酸奶 還有很多人用買來的盒裝酸奶作為 引子 和牛奶混合再次發酵成酸奶,雖然有時會做成功,但專家指出這樣的做法十分不科學,致病的危險性極大,應堅決制止。首先,從超市買回來的酸奶已經存放了數天,其...
如何盡早準確判斷懷的是男孩還是女孩
如今測試胎兒性別的方法應用,並非鼓勵人們人為地去選擇女嬰或男嬰,而造成男女性別之間的不平衡,更主要的是從遺傳學的角度來考慮優生優育。因為有許多先天性的遺傳性疾病的發生是同性別有關的,尤其是與x 性染色體連鎖有關的遺傳性疾病 譬如先天性抗維生素d佝僂病患者,患者由於先天性腎小管對磷重吸收發生障礙,造成...
如何判斷鋼化玻璃是自爆的還是被擊碎的
焦淘 貝 如果鋼化玻璃是四周有玻璃膠固定的,自爆時它只有在自爆點會有一小塊濺落,其與的形成網狀,不會脫落,並且花紋從自爆點向四周擴散 如果是被擊碎的則會大面積脫落。如果鋼化玻璃是桌面,則不太好判斷,一般自爆的玻璃形成的顆粒較小,且大小比較均勻,擊碎的顆粒較大,且大小不一。如何鑑別鋼化玻璃的自爆? 消...