一般來說,當你創建一個像這樣的字符數組。
char string[100]; //allocate contigious location for 100 characters at compile time
這裏字符串將指向該連續位置的基地址。假設存儲器地址從開始那麼這將是象
--------------------------------------
|4000|4001|4002|4003|...........|4099|
--------------------------------------
可變串將指向。要將值存儲在4000,您可以執行*(4000)。
在這裏,你可以像
*string='a'; //4000 holds 'a'
*(string+1)='b'; //4001 holds 'b'
*(string+2)='c'; //4002 holds 'c'
注:陣列可以通過任何在C三種形式進行訪問。
string[0] => 0[string] => *(string+0) => points to first element in string array
where
string[0] => *(4000+0(sizeof(char))) => *(4000)
0[string] => *((0*sizeof(char))+4000) => *(4000)
*string => *(4000)
在整數數組的情況下,假設int帶有的存儲器4字節
int count[100]; //allocate contigious location for 100 integers at compile time
這裏計數將指向contigious位置的基地址。假設從4000的存儲器地址開始,然後它會像
--------------------------------------
|4000|4004|4008|4012|...........|4396|
--------------------------------------
可變計數將指向。要將值存儲在4000,您可以執行*(4000)。
在這裏,你可以像
*count=0; //4000 holds 0
*(count+1)=1; //4004 holds 1
*(count+2)=2; //4008 holds 2
所以來你的代碼,你的目標可以這樣實現。
#include<stdio.h>
#include<stdlib.h>
int main()
{
char str[100];
*str='a';
*(str+1)='b';
*(str+2)='c';
printf("%s",str);
return 0;
}
Output: abc
您不能將字符串文字分配給數組。 – chris
我敢肯定,這個問題應該在C編程良好的書中得到解答。 – soon
數組名稱是常量和'str',所以,你不能修改它,編譯器應該給出錯誤 –