指標系統學習5 對使用字元指標變數和字元陣列的討論

2022-03-22 06:17:56 字數 1234 閱讀 9997

雖然用字元陣列和字元指標變數都能實現字串的儲存和運算,但它們二者之間是有區別的,不應混為一談……

主要概括起來有以下幾點:

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 void

main()

view code

另外需要說明的是,若定義了乙個指標變數,並使它指向乙個字串,就可以用下標形式引用指標變數所指的字串中的字元。

下標形式引用指標變數如下:

#include void

main()

//i love fishc.com!

printf("\n"

);}

view code

指標系統學習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,則有 記憶體中...