本文我们来说说大家很困惑的两个东西【常量指针】与【指针常量】
int main(void)
{
int num = 10;
num = 20;
printf("num = %d\n", num);
return 0;
}
const
做修饰,此时这个变量就会变成【常量】const int num = 10;
const
常进行修饰之后,这个变量就无法被修改了,若是有人想要去修改的话编译器就会报出警告⚠以上均为引言,接下去我们来说说有关【常量指针】和【指针常量】之间的区别
const
常的修饰,就使得它变成了一个常量,无法被修改,在指针初阶章节,我有介绍过可以将一个指针进行解引用去修改这个指针所指向那块地址的值int* p = #
*p = 20;
const
修饰符,也是和修饰num一个道理,只需要在前面加上一个【const】作为修饰即可const int* p = #
const int num = 10;
//num = 20;
int num2 = 20;
const int* p = #
//*p = 20; //err
p = &num2;
以上所描述的就是【常量指针】,一起来总结一下
*
放在【const】的左边,表示的是指针所指向的内容不能通过指针来修改,但指针变量本身可修改知道了什么是【常量指针】,接下去让我们来看看什么是【指针常量】
const
放在*
的左边,现在我们换个地方,将它放在*
的右边试试int* const p = #
*p = 20;
p = &num2; //err
以上所描述的就是【指针常量】,一起来总结一下
*
放在【const】的右边,表示的是指针变量本身的指向不能修改,但是指针指向的内容可以通过指针来修改可能还是有同学对它们之间的关系不太理解。没关系,我们通过一个生活中的场景来介绍一下
指针p
为一个女孩,num
为一个男孩,他是这个女孩的男朋友。有一天男孩陪女孩去逛街,女孩看到路边有人在卖凉皮,所以就想要男孩给他买一份凉皮吃,可是呢男孩身上只有【10块钱】,若是给女朋友买了凉皮自己就没钱用了,于是说:“不行,不给你买,凉皮有什么好吃的”[*]
的前面加上了const
作为修饰符,我们来回顾一下前面的知识*p = 0
就相当于是指针通过解引同让num = 0
,那指的就是让男孩变得身无分文;这里的p = &num2
指的就是重新修改指针p的指向,使其指向另一个值的地址。这就是【常量指针】[*]
的后面加上了const
作为修饰符,去掉了前面的const
*p = 0
就相当于是指针通过解引同让num = 0
,那指的就是让男孩变得身无分文;这里的p = &num2
指的就是重新修改指针p的指向,也就是换一个男朋友。这就是【指针常量】建议广大女性读者选择第二种男朋友,若是想下面这样的,就直接分手吧
[*]
的前后都加上了const修饰符,那么既无法通过指针去修改所指向的值,也无法修改指针的指向,虽然这使代码变得非常安全,但在还是没有这个必要╮(╯▽╰)╭最后,我们来总结一下本文所学习的内容
[*]
左边的,指针所指向的内容不能通过指针来修改,但指针变量本身可修改[*]
右边的,指针变量本身的指向不能修改,但是指针指向的内容可以通过指针来修改最后感谢您对本文的观看,如果学会了请给个三连哦❤️❤️❤️