const int *p = &i;
这个const并不是指将 i 变成了const类型,本身其实 i 还是可以被赋值的,但是不能通过这个指针去修改他。
example:
const int *p = &i; *
*p = 1;//错误的
i = 26; p = &i;//正确的
example2: int i;
const int *p; //所指的东西不能被修改
int const *p; //所指的东西不能被修改
int *const p; //指针不能直接被修改
如果const 在 * 的后面 表示指针不能被修改,在*前面表示所指的东西不能被修改。
指针运算
#include <stdio.h>
int main(){
char ac[] = {0,1,2,3,4,5,6,7,8,9};
char *p = ac;
printf("p = %p\n", p);
printf("p = %p\n", p+1);
int ai[] = {0,5,2,3,4,5,6,7,8,9};
int *b = ai;
printf("b = %p\n", b);
printf("*b = %d\n", *b+1);//*b的数值加1
printf("*b = %d\n", *(b+1));//地址上加1
return 0;
}
可得 *(p+n)= ai[n];