[C_const]指针上的对比

#include "stdio.h"

int main(int argc, char const *argv[])
{
printf("Hello const of Goodboy Lee! ");

// a和b是一个指向int类型的指针,无法通过a来改变指向的空间的值
const int *a;
int const *b;

// c是一个指向int类型的常量指针,无法改变a和b的指向
int c1 = 3;
int * const c = &c1;
int * const d; // 指向NULL, 无法改变指向,顾推荐赋初值
printf("*d = %p ", d);

int a1 = 1;
int b1 = 2;
int c2 = 31;

a = &a1;
b = &b1;
// d = &c1; // 编译报错,无法重新赋值,需定义时赋初值

// 1. 试图通过a来改变a1的值
// *a = 2; // 编译报错
// 只能通过a1来修改a指向的变量即a1的值
a1 = 100;
printf("*a = %d, a1 = %d ", *a, a1);

// 2. 试图通过b来改变b1的值
// c = &c2; // 编译报错,无法指向另一个空间
*c = 200;
printf("*c = %d, c1 = %d ", *c, c1);

return 0;
}

原文地址:https://www.cnblogs.com/webapplee/p/3887111.html