指针与常量(c语言)
- 指向常量的指针
- 常量指针
- 指向 “指向常量的常量指针”的指针(二级指针)
- 总结
- 指向常量的指针
- 常量指针
常量
常量应该是这样:
复制代码
1
2520,‘a’,3.14
或者这样:
复制代码
1
2
3
4#define PRICE 520 #define A 'a' #define PI 3.14
还可以使用const关键字修饰
复制代码
1
2
3
4- const int price = 520; - const char a = 'a'; - const float pi = 3.14;
复制代码
1
2
3
4
5
6
7
8
9//对const关键字定义的变量赋值 #include<stdio.h> int main(){ const float pi = 3.14; printf("%fn",pi); pi = 3.1415; return 0; }
这样会出现错误
复制代码
1
2error: assignment of read-only variable 'pi'
因为变量pi是只读的,如果用指针指向常量,并通过解引用指针赋值,也会出现同样的错误
指向常量的指针
复制代码
1
2
3
4
5
6
7#include<stdio.h> int main(){ const int num = 520; const int *p=# *p = 1024; }
复制代码
1
2error: assignment of read-only variable 'pi'
如果让const指针指向一个变量
复制代码
1
2
3
4
5
6
7
8
9
10#include<stdio.h> int main(){ int num = 520; //const int cnum = 888; const int *pc = num; printf("num:%d,%num%pn",num,&num); printf("*pc:%d,pc:%pn",*pc,pc); *pc = 1024; }
这样仍然会被禁止
复制代码
1
2[Error] assignment of read-only location '*pc'
但是可以通过给变量赋值改变*p的值
常量指针
复制代码
1
2
3
4
5
6
7
8
9#include<stdio.h> int main(){ int num = 520; const int cnum = 888; int * const p = # *p = 1024; printf("*p:%dn",*p); }
可以顺利输出
但是
复制代码
1
2
3
4
5
6
7
8
9
10
11#include<stdio.h> int main(){ int num = 520; const int cnum = 888; int * const p = # *p = 1024; printf("*p:%dn",*p); p = &cnum; printf("*p:%dn",*p); }
这样就会出错
指向 “指向常量的常量指针”的指针(二级指针)
复制代码
1
2
3
4
5
6
7
8
9
10
11#include<stdio.h> int main(){ int num =520; const int cnum = 888; 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("**p:%d,*p:%d,num:%dn",**pp,*p,num); }
顺利打印
总结
const修饰的变量具有只读的特性
指向常量的指针
指针可以修改为指向不同的常量
指针可以修改为指向不同的变量
可以通过解引用来读取指针指向的数据
不可以通过解引用修改指针指向的数据
常量指针
指向非常量的常量指针
- 指针自身不可以被修改
- 指针指向的值可以被修改
指向常量的常量指针
- 指针自身不可以被修改
- 指针指向的值也不可以被修改
最后
以上就是清脆心情最近收集整理的关于指针与常量的全部内容,更多相关指针与常量内容请搜索靠谱客的其他文章。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复