雖然用字元陣列和字元指標變數都能實現字串的儲存和運算,但它們二者之間是有區別的,不應混為一談……
主要概括起來有以下幾點:
1. 字元陣列由若干個元素組成,每個元素中 放乙個字元,而字元指標變數中存放的是位址(字串第1個字元的位址),決不是將字串放到字元指標變數中。
2. 賦值方式。對字元陣列只能對各個元素賦值,不能用以下辦法對字元陣列賦值。
char str[20];
str=″i love fishc.com!″;
而對字元指標變數,可以採用下面方法賦值:
char *a;
a=″i love fishc.com!″;
但注意賦給a的不是字元,而是字串第乙個 元素的位址。
3. 對字元指標變數賦初值:
char *a=″i love fishc.com!″;
等價於char *a;
a=″i love fishc.com!″;
而對陣列的初始化:
char str[20]={″i love fishc.com!″};
不能等價於
char str[20];
str[ ]=″i love fishc.com!″;
4. 如果定義了乙個字元陣列,在編譯時為它分配記憶體單元,它有確定的位址。而定義乙個字元指標變數時,給指標變數分配記憶體單元,在其中可以放乙個字元變數的位址也就是說,該指標變數可以指向乙個字元型資料,但如果未對它賦予乙個位址值,則它並未具體指向乙個確定的字元資料。
我們舉個例子來說明,如:
char str[10];
scanf(″%s″,str);
以上是完全可以的!
而常有人用下面的方法,目的是想輸入乙個字串,雖然一般也能執行,但這種方法是危險的 :
char *a;
scanf(″%s″,a);
5. 指標變數的值是可以改變的,如:
改變指標變數的值
#include voidview codemain()
另外需要說明的是,若定義了乙個指標變數,並使它指向乙個字串,就可以用下標形式引用指標變數所指的字串中的字元。
下標形式引用指標變數如下:
#include voidview codemain()
//i love fishc.com!
printf("\n"
);}
指標系統學習4 字串與指標
1 用字元陣列存放乙個字串,然後輸出該字串。例題一 定義乙個字元陣列,對它初始化,然後輸出該字串。include void main 2 用字元指標指向乙個字串 例題二 可以不定義字元陣列,而定義乙個字元指標。用字元指標指向字串中的字元。include void main 對字串中字元的訪問,可以用...
對使用字元指標變數和字元陣列的討論
區別 1 字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的是位址 字串第乙個字元的位址 2 賦值方式。對字元陣列只能對各個元素賦值,不能用以下方法對字元陣列賦值 char str 20 str i love china 而對字元指標變數,可以用如下方法賦值 char a a i...
指標系統學習3 多維陣列與指標
用指標變數可以指向一維陣列中的元素,也可以指向多維陣列中的元素。但在概念上和使用上,多維陣列的指標比一維陣列的指標要複雜一些。先回顧一下多維陣列的性質,可以認為二維陣列是 陣列的陣列 例 定義int a 3 4 則二維陣列a是由3個一維陣列所組成的。設二維陣列的首行的首位址為2000,則有 記憶體中...