C語言 字串 指標

2021-06-29 14:02:36 字數 2874 閱讀 1552

---字串

1.字串

"jack" == 'j' + 'a' + 'c' + 'k' + '\0'   用陣列儲存字串

char name[10] = "jack";

printf(name);

2.字串的一些定義

都是字串(\0的ascii碼值是0)

char name[8] = "it";

char name2[8] = ;

char name3[8] = ;(\0的ask碼是0)

char name4[8] = ;最好不要用此種方式寫字串

3.\0的作用

字串結束的標記

4.常見錯誤

不算是乙個字串(只能說是乙個字元陣列)

char name5 = ;

5.輸出方式

printf("%s",name); // 會從name這個位址開始輸出字元,直到遇到\0為止

---strlen函式:計算字串長度

1.strlen函式:計算字串長度

1>計算的是字元數,並不是字數。乙個漢字算作3個字元

2>計算的字元不包括\0

3>從某個位址開始數字符的個數,直到遇到\0為止

2.strlen函式宣告在string.h檔案中

#include

int main()

; // 遇到'\0'就結束

int size = strlen(name2);

printf("%d\n", size);

return 0;

}3.程式設計師編寫乙個程式的優先順序:可讀性->效能->精簡(重構)

4.字串練習(其中包含4種字串遍歷方式)

/*編寫乙個函式char_contains(char str,char c),

如果字串str中包含字元c則返回數值1,否則返回數值0

*/#include

#include

int char_contains(char str, char c);

int main()

// "itc"  '7'

int char_contains(char str, char c)

/*int char_contains(char str, char c)

}// 2.說明str裡面不包含字元c

return 0;

}*//*

int char_contains(char str, char c)

i++;

}// 2.說明str裡面不包含字元c

return 0;

}*//*

int char_contains(char str, char c)

;其實用字串陣列也可實現上面的儲存:

char name[2][10] = ;

七、 返回指標的函式

指標也是c語言中的一種資料型別,因此乙個函式的返回值肯定可以是指標型別的。

返回指標的函式的一般形式為:型別名 * 函式名(引數列表)。

八、 指向函式的指標

1、 為什麼指標可以指向乙個函式

函式作為一段程式,在記憶體中也要佔據部分儲存空間,它也有乙個起始位址,即函式的入口位址。函式有自己的位址,那就好辦了,我們的指標變數就是用來儲存位址的。因此,可以利用乙個指標指向乙個函式。其中,函式名就代表著函式的位址。

2、 指向函式的指標的定義

定義的一般形式:函式的返回值型別 (*指標變數名)(形參1, 形參2, ...);

3、 使用注意:

1> 由於這類指標變數儲存的是乙個函式的入口位址,所以對它們作加減運算(比如p++)是無意義的

2> 指向函式的指標變數主要有兩個用途:呼叫函式,將函式作為引數在函式間傳遞。

---指標和陣列

1.陣列元素的訪問方式

int ages[5];

int *p;

p = ages;

1> 陣列名[下標]  ages[i]

2> 指標變數名[下標] p[i]

3> *(p + i)

2.指標變數+1,位址值究竟加多少,取決於指標的型別

int *   4

char *  1

double * 8

int main

---指標和字串

char *name = "it";//指標變數指向了字串的首字母

1.記憶體的儲存方式:

1>常量區  存放一些常量字串

2>堆

3>棧      存放區域性變數

2.定義字串的2種方式

1>利用陣列

char name = "fsfsaf";

特點:字串裡面的字元是可以修改的

使用場合:字串的內容需要經常修改

2>利用指標

char *name = "faffsf";

特點:字串其實是乙個常量字串,裡面的字元是不能修改的

場合:字串的內容不需要修改,而且這個字串經常使用

指標陣列(字串陣列)

char *name[5] = ;

3.指標和字串練習

/*(不包括\0)

編寫乙個int string_len(char *s),返回字串s的字元長度

*/#inclue

int string_len(char *s);

int main()

int string_len(char *s)

*/while ( *s++ ) ; 

return s - p - 1;}/*

int string_len(char *s)

return count;}*/

/*int string_len(char *s)

return count;

}*/

C語言 字串指標(指向字串的指標)

字串一旦被建立就存在於常量池中。以字元陣列形式建立的字串,實際上是從字串常量池中複製了乙個副本,所以修改字元陣列的內容時,只是修改的自己的副本,並不會影響到常量池中的字串。而對字串指標strp操作時會影響到常量池中的字串 char strc string char strp string print...

C語言指標 字串和指標

字元指標可以指向字元變數,但在實際應用中,我們常常會用到字串,而字串也是可以用字元指標指向的,但根據字串的不同儲存方式主要分為字串常量和利用字元陣列儲存的字串變數,兩者有不同的定義和使用形式 字元指標可以用來儲存字串常量的首位址 例如 char ptr my name is 此時,字串常量在記憶體中...

C語言 指標 指標 陣列 字串

位址 在c語言中定義的每乙個變數都擁有屬於自己的儲存單元的位址,通常我們認為乙個變數擁有兩個值,乙個左值 位址 乙個右值 變數的值 在scanf 中使用到的 取位址符 就是向這個位址中輸入資料從而給變數賦值 訪問位址 就需要用到指標,用於儲存位址 對於物件的訪問 1.直接訪問 通過物件名去實現訪問,...