為什麼字串可以賦值給字元指標變數

2021-10-07 22:14:31 字數 1377 閱讀 8660

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語言是比較低階的語言,沒有字串概念,只有字元陣列,不能自動分配空間,...