MST

星途 面试题库

面试题:C语言指针常量特性基础应用

请说明指针常量与常量指针的区别,并写出一段C语言代码,分别定义一个指针常量和一个常量指针,然后在代码中对它们进行合理的使用和操作,展示其特性。
11.5万 热度难度
编程语言C

知识考点

AI 面试

面试题答案

一键面试

指针常量与常量指针的区别

  1. 常量指针(Constant Pointer)
    • 定义:指向常量的指针,即指针指向的内容是常量,不能通过该指针去修改所指向的内容。但是指针本身可以指向其他地址。
    • 语法:const type *pointer 或者 type const *pointer
  2. 指针常量(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 的值。