c語言陣列下標為負數

2021-10-08 16:29:02 字數 815 閱讀 5005

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.對於乙個陣列,我們只能夠做兩件事 ...