面试题答案
一键面试- 指针常量的意义:
- 在函数
void modifyArray(int *const ptr, int size)
中,int *const ptr
表示ptr
是一个指针常量。这意味着指针ptr
本身的值(即它所指向的内存地址)不能被修改,但通过该指针所指向的内存位置的值是可以修改的。也就是说,一旦ptr
被初始化指向某个内存地址,它就不能再指向其他地址了,但可以修改它所指向的地址处的内容。
- 在函数
- 完整代码如下:
#include <stdio.h>
void modifyArray(int *const ptr, int size) {
for (int i = 0; i < size; i++) {
*(ptr + i) = *(ptr + i) * 2; // 通过指针常量修改数组元素
}
// 以下代码会报错,因为ptr是指针常量,不能修改其指向的地址
// ptr = ptr + 1;
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
modifyArray(arr, size);
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
在上述代码中,modifyArray
函数接受一个指向int
类型的指针常量ptr
和数组的大小size
。在函数内部,可以通过指针ptr
修改数组元素的值,将每个元素乘以2。而如果尝试修改ptr
本身的指向(例如ptr = ptr + 1;
),编译器会报错,体现了指针常量在实际场景中的限制。在main
函数中,创建了一个数组并调用modifyArray
函数,然后输出修改后的数组元素。