問題一: 如何理解陣列作為函式引數時,陣列名就是指標?
1 #include2 #include3using
namespace
std;
4void intfun(int
arr)511
void charfun(char
arr)
1220
intmain()21;
24char a2 = "
hello world!";
2526
//c語言方法列印的是第乙個元素的位址
27 printf("
c_main_int-------------------------------\n");
28 printf("
%x \n
", a1); //
列印第乙個元素位址
29 printf("
%x \n
", &a1); //
列印第乙個元素位址
30 printf("
%x \n
", &a1[0]); //
列印第乙個元素位址
3132 printf("
\nc_main_char-------------------------------\n");
33 printf("
%x \n
", a2); //
a2即位址,列印第乙個元素位址
34 printf("
%x \n
", &a2); //
a2即位址,列印第乙個元素位址
35 printf("
%x \n
", &a2[0]); //
a2即位址,列印第乙個元素位址
36 printf("
%s \n
", a2); //
a2即位址,即從第乙個元素開始列印以字串的形式
37 printf("
%s \n
", &a2); //
a2即位址,即從第乙個元素開始列印以字串的形式
38 printf("
%s \n
", &a2[0]); //
a2即位址,即從第乙個元素開始列印以字串的形式
39//
printf("%s \n", &a2[7]);
//從陣列的第8個元素開始列印
4041
42 printf("
\nc_fun_int-------------------------------\n");
43intfun(a1);
4445 printf("
\nc_fun_char-------------------------------\n");
46charfun(a2);
5354
return0;
55 }
問題一結論:當arr為陣列時,arr,&arr,&arr[0]效果是一樣的,都是陣列第乙個元素的位址.但是也有例外,在陣列(此處的arr為形參)作為函式引數的時候,&arr是形參的位址並不是實參的位址,形參的位址即為編譯器自動為區域性變數arr分配的位址,實參的位址即為主函式實參陣列的第乙個元素的位址.而這種情況下的另外兩個表示式也就是arr和&arr[0]還是一樣的含義為實參第乙個元素的位址
問題二:對陣列名取位址是個什麼鬼?為什麼在主函式中&arr和arr的效果是一樣的?
1 #include2 #include3using
namespace
std;45
intmain()6;
910int *p1 = arr; //
p1是個指向int型變數的指標變數!
1112 typedef int (* p)[100];//
p是使用者自定義的型別,是個指標型別,該指標指向int型的大小為100的陣列
1314 p p2 = &arr; //
p2是指向int陣列型別的指標變數!
1516 printf("
p1: 0x%x \n
", p1);
17 printf("
p2: 0x%x \n
", p2);
1819 printf("
p1[1]: %d \n
", p1[1
]);20 printf("
p2[1]: %d \n
", p2[1
]);21 printf("
(*p2)[1]: %d \n
", (*p2)[1
]);22
23return0;
24 }
問題二結論:p1和p2的效果是一樣的但是型別是不一樣的!
c 陣列指標和指標陣列
先記住 指標陣列 本質是陣列,資料可以用來存放int float等物件,當然也可以存放指標。例子 陣列指標,用樓上的話就是指向陣列的指標,操作指標就可以運算元組如下 int a 3 int p a printf 陣列指標 d n p 1 列印的結果為2,原因是p初始化指向了陣列a的首位址,即a 0 ...
C 筆記 C 陣列指標和指標陣列
char p 10 為陣列指標,實際上相當於二維陣列,也就是指向乙個一維陣列的指標 p可以單獨看做指向陣列的指標 比如這樣 int b 2 int cc 2 2 1,2 3,4b cc b cout 這樣的賦值是可以的,b指向的陣列的大小一定要和cc的第一維陣列大小一致,這裡輸出,4,因為b 這個時...
C語言 指標陣列和指標陣列
本質是陣列 只不過呢,它裡面存放的資料型別不是int,也不是char這類基本型別,而是乙個指標型別,說白了就是位址,所以叫指標陣列!記住 是存放指標的陣列!int p n 本質是指標 只不過是指向乙個陣列的指標,也稱之為 行指標 int p n p是乙個指標,指向乙個int型別的一位陣列,這個一位陣...