字元指標變數和字元陣列的區別:參考資料:簡單說一下:
字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為:char a[n];n為常量表示式,可初始化。字元指標是指向字元的指標,所佔記憶體單元存放的是所指字元的記憶體單元。定義方法為:char *p;
完整的解答:
1)字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的位址(字串第乙個字元的位址),決不是將字串放到字元指標變數中
2)賦值方式
對於字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值:
char str[14];
str = "i love you!";
而對於字元指標變數,可採用如下賦值:
char *a;
a = "i love you!";
賦值給a的是字串第乙個元素的位址
3)對字元指標賦初值
char *a = "i love you!";
等價於
char *a;
a = "i love you!";
而對陣列的初始化:
char str[14] = ;
不等價於
char str[14];
str = "i love you!";
4)如果定義了乙個字元陣列,在編譯時為它分配記憶體單元,它有確定的位址。而定義乙個字元指標變數時,給指標變數分配記憶體單元,在其中可以放乙個字元變數的位址
char *a, str[10];
a = str;
scanf("%s", a);
先使a有確定值,即使a指向乙個陣列的首元素,然後輸入乙個字串,把它存放在以該位址開始的若干單元中
5)指標變數的值是可以改變的,而陣列名是常量
6)用指標變數指向乙個格式字串,可以用它代替printf函式的格式字串
char * format;
fomat = "a = %d, b = %f\n"
printf(format, a, b);
相當於
printf("a = %d, b = %f\n", a, b);
因此只要改變printf所指向的字串,就可以改變輸入輸出格式,這種printf函式稱為可變格式輸出函式
也可以用字元陣列實現:
char format;
format = "a = %d, b = %f\n"
可以看出,用指標變數指向字串更簡潔
字串,字串陣列,字串指標!!
字串 字元陣列實際上是一系列字元的集合,也就是 字串 string 字串陣列 在c語言中,沒有專門的字串變數,沒有string型別,通常就用乙個字元陣列來存放乙個字串。c語言規定,可以將字串直接賦值給字元陣列 在c語言中,字串總是以 0 作為串的結束符。上面的兩個字串,編譯器已經在末尾自動新增了 0...
字串指標和字串陣列的區別
char p1 a string.和 char p2 another string.寫法的不同 p1指向的這個字串是個常量,不可改變 程式在編譯期間就為 a string.這個字串分配了固定的空間,它被儲存在全域性靜態區中.編譯器只是把指標p1的指向的位址賦為 a string.的首位址,並沒有為指...
字串陣列和字串指標的區別
在最早學c語言的時候,char 與char 是最讓我頭疼的幾個問題之一。字串陣列和字串指標是截然不同的兩個東西,如果不去在意它們之間的不同,而混合使用,可能會帶來很多麻煩。讓我們從這兩個東西建立的過程說起。當我們進行字串陣列的定義時 char str abc 其實我們做了兩件事 1.建立了乙個新的字...