C語言 陣列與指標 字元與字串

2022-06-18 01:36:15 字數 1521 閱讀 8821

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 即是乙個字串常量,該常量由乙個字元型別指標儲存其實際位址。...