C语言之指针
1.指針
指針(Pointer)是編程語言中的一個對象,利用地址,它的值直接指向(points to)存在電腦存儲器中另一個地方的值;
指針的定義格式:
數據類型 * 變量名稱;
注意:
1.定義時確定了指針變量的類型,那么該指針就只能保存對應類型變量的地址.
int number = 10; int *pointer ; //定義了一個int 類型的指針 pointer = &number;//該指針變量存儲了number變量的地址,我們就認為pointer指針指向了number? 2.指針只能存放地址.
3.同一個變量可以有多個指針指向他
int number = 10; int *pointerOne = &number; int *pointerTwo = &number; //有兩個指針指向了number變量? 4.指針可以更改指向的變量
int numberOne = 10; int numberTwo = -1; int *pointer = &numberOne;//指針指向了numberOne int *pointer = &numberTwo; //指針指向了numberTwo? 5不能訪問野指針(沒有指向的指針成為野指針)
2.字符串指針
在C中,字符串有兩種形式來存儲字符串,1.通過數組來存儲. 2.通過指針
兩者的區別:
1.通過數組存儲的字符串,它是一個變量,存儲在內存的棧中,可以被修改.
2.字符串指針,它是一個常量,存儲在常量區,不能別修改.
?
3.指針數組
用來存儲指針的數組
定義格式: 數據類型 *數組名稱[數組長度]
char *str1 = "aaa";char *str2 = "bbb";char *str3 = "ccc";char *array[] = {str1, str2, str3 };for (int i = 0; i < 3; i ++){printf("%s\n",array[i]);}?
4.指向函數的指針
定義格式:返回值類型 (* 指針變量名稱) (函數參數列表);
注意:
1.函數也會被分配存儲空間,函數名保存了函數的地址,與數組類似.
2.C語言中函數中不能定義函數,所以我們可以利用函數指針在函數內部來調用不同的函數
#import <Foundation/Foundation.h> void upChar(char *charValue); void lowerChar(char *charValue); void changeChar(char str[],void (* style)(char *));int main(int argc, const char * argv[]) {//將輸入的字符串大寫轉小寫,小寫轉大寫//1.提示用戶輸入printf("請輸入一段英文");char str[100] = {0};gets(str); //此方法不安全changeChar(str,upChar);//大寫changeChar(str, lowerChar);//小寫printf("%s",str);return 0; }//更改字符串 void changeChar(char str[],void (* style)(char *)) {char *pointer = str;while (*pointer != '\0')//取出字符串的每個字母{style(pointer);pointer++; //指針內的地址遞增,遞增單位是數據類型所占字節數} }//小寫 void upChar(char *charValue) {if (*charValue >= 'a' && *charValue <= 'z'){*charValue = *charValue - ('a' - 'A');} }//大寫 void lowerChar(char *charValue) {if (*charValue >= 'A' && *charValue <= 'Z'){*charValue = *charValue + ('a' - 'A');} }
?
轉載于:https://www.cnblogs.com/kk657483726/p/5135357.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
- 上一篇: 为什么大家都喜欢马耳他?
- 下一篇: 大家觉得林志玲身材什么水平?