概述
指针呢,自己理解的就是指向地址,直接对地址进行操作,具体接触到的有指针常量,常量指针,指针函数,指针参数
指针
void main()
{
int a=1;//定义一个int型变量
int *q=NULL;//定义一个指向int类型的指针变量
q=&a;//指针使用前必须先给定一个初地址,对q操作就是对地址操作,因此需要时用&取地址符号
printf("%d\n",*q);//输出1
*q=20; //对*q操作,自己的理解呢就向是给其他变量复制或操作一样
printf("%d\n",*q);//输出20
*q=a+1;
printf("%d\n",*q);//输出21
}
常量指针
就是使用const关键字进行修饰的指针,含义是所修饰的不会改变
void main(void)
{
int a=1;
int *const q=&a; //修饰的q不会改变,但可以通过*a进行修改
*q=10;
//q=10;//如果使用这句便会报错,因为const指的是q不变
printf("a is %d\n",a);//a=10因为q的地址指向了a因此改变*q的值,a的值也会随之变化
printf("q is %d\n",*q);//输出10
}
指针常量
void main(void)
{
int a=1;
int b=10;
int const *q=&a; //修饰的*q不会改变,但可以通过a进行修改
q=&b;
//*q=10;//如果使用这句便会报错,因为const指的是q不变
printf("q is %d\n",*q);//输出10
}
总结
1.*在const之前就是指针常量,常量不可以变,但地址可以变。
2.在const之后就是常量指针,地址不能变,但常量可以变。
3.想要像对变量一样的直接对指针变量赋值便使用q(q代表自己定义的变量)=x;如果想将其他变量的值赋给指针变量使用q(赋值变量指针)=&a(代表需要赋值的变量名)。