/**
* 經常會弄錯字元指標變數和字元陣列的使用方式
* 寫在這裡方便查閱 :
* * (1)內容不同:
* 字元陣列由若干個元素組成,每個元素放乙個字元。
* 而字元指標變數中存放的是位址(字串第乙個字元的位址),決不是將字串放到字元指標變數中。
* * (2)賦值方式:
* 對字元陣列只能對各個元素賦值,不能用以下方法:
* char str[14];
* str="i love china!";//************錯誤的賦值方式!**************
* 而對字元指標變數,可以用以下方法:
* char *a;
* a="i love china!";//***賦給a的不是字元,是字串的第乙個元素***
* * (3) 初始化:
* 對陣列的初始化:--陣列可以在定義時整體賦初值,但不能在賦值語句中整體賦值
* char str[14]=;
* 不等價於
* char str[14];
* str="i love china!";
* 對字元指標變數賦初值:
* char *a="i love china!";
* 等價於
* char *a;
* a="i love china!";
** 如果定義了乙個字元陣列,在編譯時為它分配記憶體單元,它有確定的位址 。
* * 而定義乙個字元指標變數時 ,給指標變數分配記憶體單元,在其中可以放乙個
* 字元變數的位址, 但如果未對它賦予乙個位址值,則它並未具體指向乙個確定的
* 字元資料。
* 例如:
* char str[10];
* scanf("%s",str);//正確
* * char *a;
* scanf("%s",a);//錯誤!!!a的位址是不可預料的
* 改正:
* char *a,str[10];
* a=str;
* scanf("%s",a);
* 先使a有確定的值,也就是使a指向乙個陣列的首元素,然後輸入乙個字串,
* 把它存放在以該位址開始的若干單元中。
* * (5)指標變數的值是可以改變的
* 指標變數的值可以改變
* char *a="i love china!";
* a=a+7;
* printf("%s",a);//輸出:china!
* * 陣列名雖然代表位址,但它是常量,它的值是不能改變的
* char str=;
* str=str+7;//[error]incompatible types in assignment of 'char*'to 'char[14]'
* printf("%s",str);
*/
對使用字元指標變數和字元陣列的討論
區別 1 字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的是位址 字串第乙個字元的位址 2 賦值方式。對字元陣列只能對各個元素賦值,不能用以下方法對字元陣列賦值 char str 20 str i love china 而對字元指標變數,可以用如下方法賦值 char a a i...
字元指標變數和字元陣列的對比
使用字元陣列和指標變數都能實現字串的儲存和運算,但它們兩者之間是有區別的,不應混為一談,主要有一下幾點 1 字元陣列由若干個元素組成,每個元素中放乙個字元,而字元指標變數中存放的是位址 字串中第乙個字元的位址 絕不是將字串放到字元指標變數中。2 賦值方式。可以對字元指標變數賦值,但不能對陣列名賦值。...
字元陣列和字元指標
字元陣列是一段記憶體空間 字元指標是乙個位址,指向一串字元。char str abcd char str abcd 字元陣列是一段記憶體空間 字元指標是乙個位址,指向一串字元 char str abcd char str abcd 上面這兩跳複製語句很相似,其實根本就不是一碼事。對於兩個 abcd ...