面试题答案
一键面试指针常量与常量指针的区别
- 常量指针(Constant Pointer):
- 定义:指向常量的指针,即指针指向的内容是常量,不能通过该指针去修改所指向的内容。但是指针本身可以指向其他地址。
- 语法:
const type *pointer
或者type const *pointer
。
- 指针常量(Pointer Constant):
- 定义:指针本身是常量,一旦初始化后,其值(所指向的地址)不能再改变。但是可以通过这个指针修改所指向的内容(前提是所指向的内容不是常量)。
- 语法:
type * const pointer
。
C语言代码示例
#include <stdio.h>
int main() {
// 定义常量指针
const int num1 = 10;
const int *constPtr;
constPtr = &num1;
// 以下操作会报错,因为常量指针指向的内容不能通过该指针修改
// *constPtr = 20;
// 定义指针常量
int num2 = 20;
int * const ptrConst = &num2;
// 以下操作会报错,因为指针常量的地址不能改变
// ptrConst = &num1;
*ptrConst = 30; // 可以通过指针常量修改所指向的内容
printf("常量指针指向的值:%d\n", *constPtr);
printf("指针常量指向的值:%d\n", *ptrConst);
return 0;
}
在上述代码中,constPtr
是常量指针,它指向 num1
,不能通过 constPtr
修改 num1
的值。ptrConst
是指针常量,它一旦指向 num2
,就不能再指向其他地址,但可以通过 ptrConst
修改 num2
的值。