1、C语言
#include <stdio.h> int main(void) { const int a = 10; //在C语言里这里不赋值可以编译的过去,但是这里不初始化以后就没办法初始化 //a = 100; 这里不能改但是下面的方法可以把a的值给改了 int *p = &a; //如果写成const int *p =&a;拿掉int,const *p ,const修饰的是 *p ;*p就无法改变 *p = 100; char *q = (char *)malloc(100);//虽然 char *q = malloc(100);也可以但是不严谨 printf("a = %d ",a); return 0; } //const int a ; int const a; // 相等 因为如果把int去掉都是const a; //int *const p 拿掉int,*const p这样的话修饰的是p,所以p的值不能改变,p指向的可以改变 //const int *const p;这样就都不能改变。
C++
#include <iostream> #include <stdlib.h> using namespace std; int main() { const int a = 100;//真正的const //如果一开始不初始化会报错 //a = 200; //会报错 //名修栈道,暗度陈仓 // int *p = &a; //会报错,类型不匹配要写应该写成const int *p =&a // *p = 10; //在C语言里这里的a值是可以改变的,但是在C++不行 // char *q = malloc(100);//在C语言不会报错,C++报错,因为malloc默认是void *类型 //所以应该写成 char *q = (char*)malloc(100); //cout <<a<< endl; return 0; }