亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> C语言

掌握 C 中的常量指针和常量指针

在 C 语言中,指针 是一个变量,存储另一个变量的内存地址,const关键字 用于定义变量或指针,其值一旦初始化就无法更改。当我们组合指针时 与常量 关键字,我们可以控制两件事 -

在本章中,我们将了解常量指针的三种主要变体 -

常量指针

常量指针 意味着指针本身是常量。一旦它被初始化为指向一个内存位置,它就不能指向不同的位置,但存储在该位置的值仍然可以更改。

以下是常量指针的语法 -

<前>06

在此语法中,data_type 是指针指向的数据类型,*const 使指针本身恒定,pointer_name 是指针的名称,&variable 为其分配变量的内存地址。

常量指针示例

在这个例子中,我们声明一个常量指针ptr 并使用变量x的地址对其进行初始化 。然后,我们更改 x 的值 使用ptr 然后我们打印它的值。

<前>15

下面显示的是输出 上面的程序,显示指针保持固定在 x ,但是 x的值 可以更新。

<前>23

常量指针错误示例

这是我们声明常量指针 ptr 的示例 并使用变量x的地址对其进行初始化 。然后,我们尝试让它指向变量y的地址 。这将给出错误 因为常量指针一旦初始化就不能指向另一个内存位置。

<前>37

您可以看到下面的错误 ,表明我们不能改变常量指针的地址。

<前>45

指向常量的指针

指向常量的指针 表示它所指向的值不能改变,但指针本身可以指向不同的内存地址(或变量)。

以下是指向常量的指针的语法 -

<前>53

在此语法中,const data_typedata_type const 表示指针指向一个常量值,pointer_name 是指针的名称,&variable 为其分配变量的地址。

指向常量的指针示例

在这个例子中,我们声明一个指针 ptr 指向一个常量值并将其分配给变量a的地址 。然后,我们让指针指向变量b的不同地址 并打印其值。

<前>62

以下是输出 上面的程序,显示相同的指针指向不同的变量。

<前>74

指向常量错误的指针示例

这是一个例子,我们声明一个指向常量 ptr 的指针 并使用变量 a的地址对其进行初始化 。然后,我们尝试改变a的值 通过指针。这将给出一个错误 因为指向常量的指针不允许修改它指向的值。

<前>80

下面您可以看到输出 ,显示错误 表明我们不能通过指向常量的指针修改该值。

<前>90

指向常量的常量指针

指向常量的常量指针 是一个不能改变其内存地址的指针,并且存储在该内存地址的值也不能改变。这两个操作都受到限制,因此我们只能读取值,而不能读取其他内容。

以下是指向常量的常量指针的语法 -

<前>108

在此语法中 -

指向常量的常量指针示例

在此示例中,我们声明一个指向常量 ptr 的常量指针 并将其分配给变量a的内存地址 。然后我们打印 a 的值 使用指针。

<前>115

以下是输出 上述程序 -

<前>120

指向常量错误的常量指针示例

在这个例子中,我们声明一个指向常量 ptr的常量指针 并用变量 a 初始化它 。然后,我们尝试通过指针修改值,并尝试使指针指向另一个变量。这两种操作都是不允许的,并且会导致编译器错误 .

<前>135

下面您可以看到输出 显示错误 -

<前>147

常量指针类型之间的差异

下表显示了之间的差异 一个常量指针,一个指向常量的指针,一个指向常量的常量指针。

变化 定义 可以更改地址吗? 可以更改值吗? 示例语法 常量指针:地址固定的指针,但该地址处的值可以修改。否是
150
指向常量的指针可以指向不同地址,但不能修改所指向位置的值。是否
166
Constant Pointer to Constant地址固定的指针,该地址的值不能修改。NoNo
170

结论

在本章中,我们介绍了 C 中的常量指针和指向常量的指针。常量指针 修复地址但允许更改值,指向常量的指针 允许更改地址但不允许更改值,以及指向常量的常量指针 限制两者。


C语言

  1. C - 类型铸造
  2. C++ 中的运算符示例:什么是、类型和程序
  3. C++ 中的变量作用域
  4. C#中的序列化和反序列化示例
  5. C# - 可空值
  6. C 条件语句:IF、IF Else 和嵌套 IF Else 示例
  7. C# - 结构
  8. C++ For 循环与示例
  9. C++ 中的存储类
  10. 前 100 名 C 编程面试问题和答案(2021 年)
  11. C++ 构造函数
  12. C++ 中的运算符