字串陣列與字串指標的區別

2022-02-22 23:08:31 字數 1280 閱讀 9588

字元指標變數和字元陣列的區別:

簡單說一下:

字串陣列是用來存放字串的陣列,在記憶體中佔一段連續的單元。所佔記憶體存放的是字串。定義方法為: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.建立了乙個新的字...