第一种情况:不加const关键字
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
int main()
{
int a=10,b=20;
int *ip=&a;
*ip=100;
ip=&b;
*ip=200;
return 0;
}
第二种情况:所指之物为常量
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
int main()
{
int a=10,b=20;
const int *ip=&a;
int const *ip=&a;//和上句意义相同,所指之物为常量
*ip=100;//错误,不能给常量赋值
ip=&b;//正确
}
第三种情况:指针为常量
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
int main()
{
int a=10,b=20;
int * const ip=&a;//指针ip为常量
*ip=100;//正确
ip=&b;//错误,不能给常量赋值
}
第四种情况:所指之物和指针都是常量
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
int main()
{
int a=10,b=20;
const int * const ip=&a;//指针ip为常量
*ip=100;//错误,不能给常量赋值
ip=&b;//错误,不能给常量赋值
}
注意!注意!注意:
#include<stdio.h>
#include<assert.h>
#include<string.h>
#include<stdlib.h>
#include<windows.h>
#include<time.h>
int main()
{
const int a=10,b=20;
const int *ip=&a;//指针ip为常量
int *ip=&a;//错误,常量必须用const修饰,不能和自身矛盾
//*ip=100;//错误,不能给常量赋值
ip=&b;//错误,不能给常量赋值
}