C语言的指针
指针常量:
定义方式:
#include <stdio.h>
main()
{
int a = 10;
int * const pi=&a; /*定义一个指针常量*/
a = 20;
*pi = 35;
printf("%d\n",a);
printf("%d\n",*pi);
}
指针常量的意思是本身是常量,它自己的值不能被改变,但是它所指向的地址空间却不是常量,是可以被改变的
例如上面的*Pi=35
#include <stdio.h>
main()
{
int a = 10;
int b = 20;
int * const pi=&a; /*定义一个指针常量*/
pi = &b; //error 试图修改指针常量的值
printf("%d\n",*pi);
}
常量的指针
定义方式:
#include <stdio.h>
main()
{
const int a = 10;
const int b = 120;
const int * pi=&a; //定义一个常量的指针,指针必须指向一个常量
printf("%d\n",*pi);
pi = &b;
printf("%d\n",*pi);
}
常量的指针,本身的值,是可以改变的,如上例,但是所指向的地址的内容,却不能被改变,如下例:
#include <stdio.h>
main()
{
const int a = 10;
const int b = 120;
const int * pi=&a;
*pi = 100; //编译器会报错
printf("%d\n",*pi);
}
但是常量的指针,可以指向普通的变量地址,只是不能用*pi的方式来修改变量的值,如下例会报错
#include <stdio.h>
main()
{
int a = 10;
const int * pi=&a;
*pi = 100; //error
printf("%d\n",*pi);
}
但是这样却可以
#include <stdio.h>
main()
{
int a = 10;
const int * pi=&a;
a= 100; //ok
printf("%d\n",*pi);
}
指向常量的指针常量
#include <stdio.h>
main()
{
int a = 10;
int b = 20;
const int * const pi=&a; /*定义一个指针常量*/
printf("%d\n",*pi);
}
指向常量的指针常量,也就是它本身的值不能改变,它指向的地址空间的值也不能改变
#include <stdio.h>
main()
{
int a = 10;
int b = 20;
const int * const pi=&a; /*定义一个指针常量*/
pi = &b; //error 试图修改指针的值
printf("%d\n",*pi);
}
#include <stdio.h>
main()
{
int a = 10;
int b = 20;
const int * const pi=&a; /*定义一个指针常量*/
*pi = 200; //error 试图修改指针所指向的变量的值
printf("%d\n",*pi);
}