你好, 欢迎回来｡
在这节课中, 我想谈谈const修饰符,
以及我们如何用它和指针｡
我们已经了解了关于持续的先前讲座｡
它只是意味着你不能改变变量的值｡ 但是, 当我们将它应用于指针时, 它意味着什么呢？
因此,
当我们在变量或数组中使用const修饰符时, 它告诉编译器变量数组的内容不会被程序更改｡
另一种方法是由预处理器创建define语句, 但const通常是更有效的更好方法｡
对于指针, 我们在使用const修饰符时必须考虑两件事｡
我们是否真的在说指针不能改变？
或者我们是说指针指向的值不能更改吗？
因为记住一个指针包含一个地址的值｡
我们可能永远都不想改变这个地址｡
或者, 我们可能不想更改点指向的值｡
在这两种情况下, 我们都必须在语法中做到具体｡
因此, 当您宣告指标时, 可以使用const保留字来指示所指向的值不得变更｡
你提供这个的方式,
所以指针是一个值, 因为值有地址｡
它指向的是地址的值｡
如果你不想改变, 你会这样做｡
你会说当你声明指针的时候, 你会把星号放在类型之前的常量修饰符中｡
所以你会说常量, 不管你的指针是什么类型, 星号指针｡
所以这实际上是变形的定义了一个指向常量的指针｡
我们无法更改999l｡
所以我们声明pvalue指向的值是常数｡
编译器将检查是否有任何语句试图修改pvalue所指向的值｡
如果程序中有任何伙伴这样做, 它将抛出一个错误｡
这就是语法｡
这里你需要注意的是const是第一个单词,
在type之前. 也就是说指向的值不能改变｡
如果你想对p值做这样的操作, 你想给指向的东西赋值,
因为你可以看到间接操作符｡
这意味着我们要给指向的东西赋值｡
如果我们尝试这样做, 它将给予出错误,
因为我们无法更改该值, 无法将999l更改为888l｡
那么, 现在如何处理指向常量的指针呢？
在前面的声明中,
我们创建了一个指针, 这个指针所指向的位置不能改变｡
但是我们仍然可以更改我们声明的变量的实际值｡
所以我们仍然可以更改长整型值｡
我们无法更改星星p值｡
但是长整型值并没有被定义为常量它只是被定义为长整型值.
所以我们仍然可以修改值整型指针, 因为它没有应用常量｡
我们只对指针应用了常量｡ 所以我们可以说价值等于777l｡
指向的值已更改, 但您没有使用指针进行更改｡
指针本身也不是常量｡
指针记住包含一个地址｡
我们没有将指针声明为常量｡ 所以我们仍然可以改变它｡
我们把指针所指的东西设为常数｡ 如果我们声明了一个新的变量number, 我们可以说p值等于这个数字的地址｡
这很好, 因为我们改变了指针值的地址.
我们不会改变指针指向的值｡
所以要理解这个区别,
要么改变指针的值, 它只是一个地址, 要么改变指针指向的内容｡
如果你不想改变指针指向的内容, const必须是指针本身声明中的第一个关键字｡
同样, 在这个例子中, 我们将改变p值中存储的地址, 使其指向一个数字｡
我们仍然不能使用指针来改变存储的值, 因为它被声明为我们不能改变那个值｡
您可以像我们一样, 随意更改存储在指针中的地址｡
即使您已经更改了存储在指针中的地址,
也不允许使用指针更改指向的值｡
所以即使我们把它改成了long
number, 指针仍然把constant作为关键字.
因此, 无论指针指向什么, 我们都不能更改值｡
不允许指针的地址改变, 指针中的值｡
因此, 您可能还希望确保存储在指针中的地址不能更改｡
您可以通过在指针声明中使用constant关键字来实现这一点,
方法与此相同, 但略有不同｡
将const作为第一个关键字, 而将其放在数据类型和星号之后｡
这是说指针本身不能改变它的值｡
如果你把它放在int之前, 你就意味着指针指向的值不能改变｡
所以当你这样做的时候, 它会确保指针总是指向同一个东西｡
地址永远不会变｡
编译器将检查您是否尝试在代码中的其他位置更改指针｡
您不能更改此地址｡
所以如果你试图说p count等于and item, 你会得到一个错误｡
因为它只能指向计数地址｡
如果你想改变的话, 关键字就放在哪里｡
如果您不想让指标的指标变更, 或如果您不允许指标的位址变更｡
作为第一个关键字的常量不允许更改指向指针的值｡
如果你把常量放在星星中的数据类型之后, 那就是说指针地址不能改变｡
这是一个很大的问题, 这是非常混乱的, 所以研究一下我刚才说的｡
理解这个语法, 它非常重要,
也非常棘手｡ 它可以很容易地犯那种错误｡
所以要明白其中的区别｡
你仍然可以使用p
count来改变p count指向的值, 就像我们在上一个例子中所做的那样｡ 因为p计数是, 即使我们不能赋值一个新的地址,
我们仍然可以改变它指向的值｡
所以我们可以取消引用它, 并以这种方式更改它｡ 我们可以说星星p计数等于345, 这很好｡
通过指针引用存储在count中的值, 并将该值更改为345｡
你可以创建一个常量指针, 指向一个同时也是常量的值, 你可以这样做, constant
in星星, constant p
item.
也就是说这个值指向的是常数,
指针本身也是常数.
所以p项是指向一个常量的常量指针所以一切都是固定的.
不能更改存储在p item中的地址, 也不能使用p
item修改它所指向的内容｡
但是, 您仍然可以更改项目｡
项不是常量, 因此您可以更改项｡
您可以直接变更该值｡
如果你想确保没有任何改变,
你必须实际上创建一个常量｡
那就意味着它永远不会改变｡
但是请记住这里常量指针和指针所指向的常量值之间的区别｡
您可以同时使用这两种方法｡ 您可以使用其中一个｡
如果你想确保一切都是常数, 确保你所指向的变量也是常数｡
-谢谢—谢谢