c語言中陣列的下標可以是負號,在**執行前不會對陣列是否下標越界、溢位等異常進行警告或處理,因此需人為干預。
測試**:
#include#include int main(int argc, char *ar**)
; int *p;
int offset;
if(argc == 2)
offset = atoi(ar**[1]);
else
offset =3;
if(offset<1 || offset >5)
offset=3;
p=array+ offset;
printf("%d \n", p[-1]);
return 0;
}
執行效果:
alen@ubuntu:/work/c$ gcc -o test_array test_array.c
alen@ubuntu:/work/c$ ./test_array
3 alen@ubuntu:/work/c$ ./test_array 2
2 alen@ubuntu:/work/c$ ./test_array 3
3 alen@ubuntu:/work/c$ ./test_array 4
4 alen@ubuntu:/work/c$ ./test_array 5
5 alen@ubuntu:/work/c$ ./test_array 1
1 alen@ubuntu:/work/c$ ./test_array 1 rr
3
陣列下標為負數
在使用陣列的時候,相信大多數人首先想到的是 陣列是從0開始的,陣列的下標必須大於或等於0 但是在處理一些數值計算的問題的時候,很可能會遇到下標為負數的問題,比如,在做9 7浮點小波變換的時候會有 x m x m m 在這種情況下,當要迴圈迭代計算的時候,就需要判斷m是否為負數,這個還是有點麻煩的。這...
陣列下標為0
長度為0的陣列 c語言的非標準用法之一 在標準c和c 中,長度為0的陣列是被禁止使用的。不過在gnu c中,存在乙個非常奇怪的用法,那就是長度為0的陣列,比如array 0 很多人可能覺得不可思議,長度為0的陣列是沒有什麼意義的,不過在這兒,它表示的完全是另外的一層意思,這個特性是不可移植的,所以,...
C語言中陣列名和陣列下標
整理自 c陷阱與缺陷 陣列注意點 1.c陣列中只有一維陣列,陣列的大小必須在編譯期作為常數確定。但c陣列的元素可以是任何型別的物件,當然也可以是另乙個陣列,所以 出乙個多維陣列。不太明白為什麼要強調只有一維陣列,難道 模擬 出來的多維陣列和真正的多維陣列不一樣?2.對於乙個陣列,我們只能夠做兩件事 ...