printf 指针地址_指针搞都不懂,好意思说自己会C语言?
C語言面試必問知識點之「指針」
一、指針相關概念
指針與地址
我們使用的計算機,系統為了更好地管理我們的內存,就為內存區的每一個字節都分配一個唯一編號,這就是“地址”。
指針的實質就是地址,就是這一個個編號。
指針變量
變量在編譯的時候系統要為它分配一個地址,如用另一個變量來存放這個地址,那么這個變量就叫指向變量的指針變量。
指針的定義(type *變量名;)
int *p;
表示該變量的類型是一個指針變量,指針變量名是p而不是*p
如果在同一行定義多個指針變量應該是:int *p1, *p2;而不是int *p1, p2
指針的初始化
type *變量名 = 地址;例子
#include int main(){ ? ?int a = 100; ? ?printf("%d\n",&a); ? ?int *c = &a; ? ?printf("%d\n",c); ? ?return 0;}
二、指針變量的使用(如何通過指針變量訪問和運算)
指針變量訪問
定義一個指針變量,并且指向一個地址
int a = 10;int *p = &a;*p = 100;printf("a:%d\n",a);指針運算
定義一個指針變量,指向一個地址,并對指針做自增自操作
#include int main(){ ? ?int a = 10; ? ?int *p = &a; ? ?printf("p:%d\n",p); ? ?p++; ? ?printf("p:%d\n",p); ? ?return 0;}
三、數組指針
數組指針
數組指針,見名知意就知道是數組的指針,也就是數組的地址,在定義指針變量時,*變量名一定要帶上(),不然就是定義指針數組
int main(){ ? ?int array[5] = {1,2,3,4,5}; ? ?printf("%d\n",&array); ? ?int (*p)[5] = &array; ? ?printf("%d\n",p); ? ?return 0;}
四、指針數組
指針數組
指針數組,就是存放指針的數組,數組里的元素都是指針,在定義指針數組時,不需要加上(),不然就是定義數組指針
int main(){ ? ?int array[5] = {1,2,3,4,5}; ? ?int *p[5]; ? ?int i; ? ?for(i=0;i<5;i++) ? ?{ ? ? ? p[i] = &array[i]; ? ? ? printf("%d\n",p[i]); ? ?} ? ?for(i=0;i<5;i++) ? ?{ ? ? ? ?printf("%d\n",*p[i]); ? ?} ? ?return 0;}
五、字符串與指針
字符串的表示形式
數組形式:
char str[] = "I love xdclass"; //棧
字符指針形式:
char *str = "I love xdclass"; //文字常量區
字符指針形式
char *str = "I love xdclass";因為常量不可修改,所以指針變量指向的字符串內容不可修改,即*str = "xdclass";這樣是錯誤的
修改指針變量的值
char *str2 = "I love the world";str = str2;例子
int main(){ ? ?char string[] = "I love xdclass"; ? ?printf("%s\n",string); ? ?char *str = "I love xdclass"; ? ?char *str2 = "I love the world"; ? ?str = str2; ? ?printf("%s\n",str); ? ?return 0;}
六、怎么使用指針函數
指針函數
函數返回類型是指針,所以就指針函數
例子
#include // 買菜:char* buy(){ ? ?char *foods = "雞蛋"; ? ?printf("%s買好了\n",foods); ? ?return foods;}// 洗菜void wash(char *foods){ ? ?printf("把%s洗干凈了\n",foods);}// 炒菜void make(char *foods){ ? ?printf("把%s做好了\n",foods);}int main(){ ? ?char ?*foods = buy(); ? ?wash(foods); ? ?make(foods); ? ?return 0;}
七、怎么使用函數指針
函數指針的定義
函數返回值類型 (* 指針變量名) (函數參數列表);
int(*p)(int, int, double, float);例子
int printfx(int x){ ? ?printf("%d\n",x); ? ?return 0;}int main(){ ? ?printfx(2); ? ?int (*p)(int); ? ?p = printfx; ? ?p(3); ? ?return 0;}
八、 什么是指向指針的指針
什么是指向指針的指針?
如果一個指針變量存放的是另一個指針變量的地址,則稱這個變量為指向指針的指針變量或指向指針的指針
定義方式
數據類型 **變量名
例子
??
# Louis講師?#
-?手把手帶你走進指針的世界 -
速戳,觀看「C語言教程」! 創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的printf 指针地址_指针搞都不懂,好意思说自己会C语言?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: jq获取当前完整html,jquery怎
- 下一篇: docker安装zookeeper_Do