1 字元與字串:char c='a'而不能寫出char c="a" //字元變數用單引號'',而字串用雙引號。
2 字元陣列與字元指標的初始化:
char s[10]=, *p
strcpy(s,"hello word\n");或者p="hello word\n";
而不能用s="hello word\n"y因s陣列名表示陣列的首位址是個常量。
字元陣列的0初始化:
方法1:char s[10]=;
方法2: memset(s,0,10);
方法3: for迴圈中初始化:
int i,s[10],*p; 或者 int i,s[10],*p;
p=s for(p=a;pfor(i=0;i<10;i++) scanf("%d",p);
scanf(:%d」,p++);
而不能:
int i,a[10];
for (i=0;i<10;i++)
scanf("%d",a++);//陣列的首位址是不能改變的。
4字元陣列 字元指標 字串 strlen() sizeof
4.1字元陣列 :char a="string"或者=
4.2字串:系統遇到字串都會在末尾加上結束符「\0」
4.3 strlen(char *str):計算遇到「\0"之前的字串的長度的函式,引數必須是字串,計算的結果不包括結束符「\0",因此計算的是字串中字元的個數。
4.4 sizeof():計算常量或變數儲存型別的位元組數,它是巨集計算符不是函式。
4.5 字元指標:char *s 指標通常為4個位元組
所以 char* ss = "0123456789";
sizeof(ss) 結果 4 ===》ss是指向字串常量的字元指標
sizeof(*ss) 結果 1 ===》*ss是第乙個字元,字元佔1個位元組
char ss = "0123456789";
sizeof(ss) 結果 11 ===》ss是陣列,計算到\0位置,因此是10+1
sizeof(*ss) 結果 1 ===》*ss是第乙個字元
char ss[100] = "0123456789";
sizeof(ss) 結果是100 ===》ss表示在記憶體中的大小 100×1
strlen(ss) 結果是10 ===》strlen是個函式內部實現是用乙個迴圈計算到\0為止之前,不包括結束符
int ss[100] = "0123456789";
sizeof(ss) 結果 400 ===》ss表示再記憶體中的大小 100×4,32位機種int整形資料佔4個位元組
strlen(ss) 錯誤 ===》strlen的引數只能是char* 且必須是以''\0''結尾的
char q="abc";
char p="a\n";
sizeof(q),sizeof(p),strlen(q),strlen(p);
結果是 4 3 3 2
C 字串指標與字元陣列
visual studio 2012 系統分配時儲存位置不一樣 字串指標在初始化時儲存在靜態區是常量,初始化後不能修改 字元陣列 是存放在棧中的,值是可以修改的 include stdafx.h include include include include include include char...
C 字串指標與字串陣列
在做面試100題中第21題時,發現char astr abcdefghijk 0 和char astr 有點區別,以前一直以為是一樣的,但是在該程式中採用字串指標執行一直出錯。後來在網上查查,果然發現大大的不同。分析 當你需要修改字串時,採用指標指向該字串編譯通過但是執行出錯,而採用字串陣列時不會出...
C語言字串與字元陣列
通俗的講字串是由一串字元組成,例如 hello world n 即是乙個字串。c 語言中沒有真正意義上的字串型別,字串由字元陣列或者字串常量來表示。const char p hello world n 上述示例中 hello world n 即是乙個字串常量,該常量由乙個字元型別指標儲存其實際位址。...