這幾天上陣列與指標時,對於這三個概念一直都很模糊。什麼位址常量不可以運算,什麼指標加一就是加四個位元組等等...
1.#include
int main(void)
結果是48,4,4,12,4
2.#include
int main(void)
,*p=a,i;
printf("%p/n",&a);
printf("%p/n",&a+1);
printf("%p/n",&a[0]);
printf("%p/n",&a[0]+1);
printf("%p/n",&a[1]);
getchar();
}結果是0022ff20,0022ff34,0022ff20,0022ff24,0022ff24,
3.#include
int main(void)
;p=a ;
printf("%d/n",*p++); //ok
printf("%d/n",*a++); //error
printf("%d/n",*(0x0022ff38));//error
getchar();
}結果 編譯出錯:error1: iso c++ forbids cast to non-reference type used as lvalue 。non-lvalue in assignment
error2: invalid type argument of `unary *'
陣列名,陣列首位址,a, a, a 0
1 指標陣列 是陣列,但陣列中的每個元素都是指標 int p 5 如p 2 是指標,可 p 2 3 2 指向陣列的指標 是個指標,但它指向的是乙個陣列 int a 5 int p 5 與前一行比較,p相當於a,即p a 就像 int m int pm pm就相當於m.pm m p a 可與前一行合併...
陣列名,陣列首位址,a, a, a 0
1 指標陣列 是陣列,但陣列中的每個元素都是指標 int p 5 如p 2 是指標,可 p 2 3 2 指向陣列的指標 是個指標,但它指向的是乙個陣列 int a 5 int p 5 與前一行比較,p相當於a,即p a 就像 int m int pm pm就相當於m.pm m p a 可與前一行合併...
陣列指標和陣列首位址
下面 會輸出什麼 1 2 3 4 5 6 intmain intargc,char argv int ptr int a 1 printf d ptr 1 答案 4 解析 這邊主要考察的是陣列指標和陣列首位址的問題。a是陣列指標,a是陣列首位址。而指標的 1,增加的是1個指標型別的長度。比如 a是陣...