C语言——void指针、NULL指针、指向指针的指针、
家电修理 2023-07-16 19:16www.caominkang.com电器维修
目录
一、void指针
二、NULL指针
三、指向指针的指针
1.指向指针的指针
2.指针数组和指向指针的指针
四、常量和指针
1.常量
2.指向常量的指针
3.常量指针
4.指向“指向常量的常量指针”的指针
一、void指针
- void指针我们把它称之为通用指针,就是可以指向任意类型的数据。也就是说,任何类型的指针都可以赋值给void指针。
代码举例:
#includeint main() { int num = 1024; int pi = # char ps = "LoveC"; void pv; pv = pi; printf("pi: %p, pv: %pn", pi, pv); pv = ps; printf("ps: %p, pv: %pn", ps, pv); return 0; }
运行结果
二、NULL指针
- 在C语言中,如果一个指针不指向任何数据,则称之为空指针,用NULL来表示。
#define NULL ((void )0)
- 当不清楚要将指针初始化为什么地址时,请将它初始化NULL;在对指针进行解引用时,先检查该指针是否为NULL。这种策略可以为今后编写大型程序节省大量的调试时间。
- NULL不是NULNULL用于指针和对象,表示控制,指向一个不被使用的地址;而‘‘’表示字符串的结尾。
三、指向指针的指针
1.指向指针的指针
#define NULL ((void )0)
1.指向指针的指针
代码举例
#includeint main() { int num = 520; int p = # int pp = &p; printf("num: %dn", num); printf("p: %dn", p); printf("pp: %dn", pp); printf("&p: %p,pp: %pn", &p,pp); printf("&num: %p,p: %p, pp: %pn", &num, p, pp); return 0; }
运行结果
2.指针数组和指向指针的指针
- 至少有两个好处① 避免重复分配内存;② 只需要进行一处修改
- 代码的灵活性和安全性都有了显著提高
代码举例
#includeint main() { char cBooks[] = { " ", " ", " ", " ", " ", "<带你学C带你飞>"}; char byFishC; char jiayuLoves[4]; int i; byFishC = &cBooks[5]; jiayuLoves[0] = &cBooks[0]; jiayuLoves[1] = &cBooks[1]; jiayuLoves[2] = &cBooks[2]; jiayuLoves[3] = &cBooks[3]; printf("FishC出版的图书有 %sn", byFishC); printf("小甲鱼喜欢的图书有 n"); for(i = 0;i< 4;i++) { printf("%sn", jiayuLoves[i]); } return 0; }
运行结果
四、常量和指针
1.常量
- 常量应该是这样520,'a',3.14
- 或者这样
#define PRICE 520
#define A'a'
#define PI 3.14
- 还可以使用const关键字修饰,把变量变成只读,不可写入不可修改
const int price = 520;
const char a = 'a';
const float pi = 3.14;
2.指向常量的指针
- 指针可以修改为指向不同的常量
- 指针可以修改为指向不同的变量
- 可以通过解引用来读取指针指向的数据
- 不可以通过解引用修改指针指向的数据
- 常量应该是这样520,'a',3.14
- 或者这样
#define PRICE 520 #define A'a' #define PI 3.14
- 还可以使用const关键字修饰,把变量变成只读,不可写入不可修改
const int price = 520; const char a = 'a'; const float pi = 3.14;
2.指向常量的指针
- 指针可以修改为指向不同的常量
- 指针可以修改为指向不同的变量
- 可以通过解引用来读取指针指向的数据
- 不可以通过解引用修改指针指向的数据
代码举例
#includeint main() { int num = 520; const int um = 880; const int pc = &um; printf("um:%d,&um:%pn",um,&um); printf("pc:%d,pc:%pn",pc,pc); pc = # printf("num:%d,&num:%pn",num,&num); printf("pc:%d,pc:%pn",pc,pc); num = 1024; printf("pc:%d,pc:%pn",pc,pc); return 0; }
运行结果
3.常量指针
(1)指向非常量的常量指针
- 指针自身不可以被修改
- 指针指向的值可以被修改
(2)指向常量的常量指针
- 指针自身不可以被修改
- 指针指向的值也不可以被修改
代码举例
#includeint main() { int num = 520; const int um = 880; const int const p = # //不可被修改,不能执行 // p = 1024; // printf("p: %dn",p); //不可被修改,不能执行 // p = &um; // printf("p: %dn",p); num = 1024; printf("p: %dn",p); return 0; }
运行结果
4.指向“指向常量的常量指针”的指针
代码举例
#includeint main() { int num = 520; const int um = 880; const int const p = # const int const pp = &p; printf("pp: %p,&p: %pn",pp,&p); printf("pp: %p, p: %p, &num: %pn",pp,p,&num); printf("pp: %d, p: %d, num: %dn",pp,p, num); return 0; }
运行结果
上一篇:c#实现隐藏与显示任务栏的办法详解
下一篇:Windows8怎么删除输入法?
空调维修
- 温岭冰箱全国统一服务热线-全国统一人工【7X2
- 荆州速热热水器维修(荆州热水器维修)
- 昆山热水器故障码5ER-昆山热水器故障码26
- 温岭洗衣机24小时服务电话—(7X24小时)登记报
- 统帅热水器售后维修服务电话—— (7X24小时)登
- 阳江中央空调统一电话热线-阳江空调官方售后电
- 乌鲁木齐阳春燃气灶厂家服务热线
- 珠海许昌集成灶售后服务电话-全国统一人工【
- 乌鲁木齐中央空调维修服务专线-乌鲁木齐中央空
- 新沂热水器故障电话码维修-新沂热水器常见故障
- 诸城壁挂炉24小时服务热线电话
- 靖江空调24小时服务电话-——售后维修中心电话
- 空调室外滴水管维修(空调室外排水管维修)
- 九江壁挂炉400全国服务电话-(7X24小时)登记报修
- 热水器故障码f.22怎么解决-热水器f0故障解决方法
- 营口热水器售后维修服务电话—— 全国统一人工