2.指標可以自增,而陣列不能自增(指標是位址變數,而陣列是位址常量)。
3.void指標不能進行指標運算,也不能進行*取值操作(所指向的物件型別不確定)。
5.字元常量的型別可以理解為字元常量陣列的型別。例如 「abcd" 的型別可以看成 const char[5]
6.陣列的型別是由該陣列所存放的元素的型別和陣列本身的大小決定。例如,char s1[4] 和 char s2[5] 。s1的型別是char[4], s2的型別是char[5] 。
7.sizeof()函式是用來求型別的位元組數。
8.對於函式引數列表中的以陣列型別書寫的形式引數,編譯器會把其解釋為普通的指標型別。如對於 void func(char sa[100],int sc[20],char* p), 則sa的型別為char*,sc的型別為
int*,p的型別為char*。
9.int array = ;
printf("%d\n",sizeof(array));
結果是4,因為array的型別為int[4]
char str = 「what」;
printf("%d\n",sizeof(str));
其結果為5,因為str的型別是char[5]
char str[10] = 「what」;
printf("%d\n",sizeof(str));
其結果為10,因為str的型別是char[10]
char* p = 「abcdef」;
printf("%d\n",sizeof§);
其結果為4,因為p的型別是char*(指標是用4個位元組存放位址)
10.我們再用一組**來看指標與陣列的區別。
int inter=
;printf
("%d\n"
,&string)
;printf
("%d\n"
,string)
;printf
("%d\n"
,&string[0]
);printf
("\n\n");
char
* p =
"what"
;printf
("%d\n"
,&p)
;printf
("%d\n"
,p);
printf
("%d\n"
,&p[0]
);
其結果為:
可以看到指標變數p有自己的記憶體位址。
指標 ,將字串a複製給字串b
將字串a複製給字串b 如下 將字串a複製給b include intmain p2 0 記得給p2加上 0 for b i 0 i 做完之後 又想到了幾個問題 1 p2被覆蓋掉了嗎?那在此之前它是怎麼傳給陣列b的?2,能不能用指標變數輸出?改改動動試試後 發現這樣也可以 include intmai...
不能用字串給字元陣列賦值
c和指標 pointers on c 8.1.11 乙個字串,如 hello 一般為字串常量,可以用它對字元指標賦值,或初始化,相當於把這個字串常量的首位址賦給這個指標,如 char p hello 或者 char p p hello 但是,當用 hello 給字元陣列作初始化時,hello 並非乙...
scanf寫入字串給指標
include stdio.h main a 3 int i for i 0 i 3 i scanf d s a i nu,a i name for i 0 i 3 i printf 3d s n a i nu,a i name c語言是比較低階的語言,沒有字串概念,只有字元陣列,不能自動分配空間,...