指针:一个变量的地址 定义的时候是指针变量
指针变量:指向变量的地址 (变量是可以修改值的)
int a = 10;
int *p; //声明p是整型指针
*p=i; //p指向的位置,将i的值放到p指向的空间中
*p = &a; //把a地址的值放到p指向的空间
printf("%d",p); //取地址
printf("%d",*p); //取值(变量地址里的内容)
int& b = a; //&声明引用类型
p=array; (将数组array首地址 p)//数组名称本身就是一个引用
int a[5],*pa;
pa=a; //数组名就是首地址,指向的是数组的首地址a[0]
在类型保持一致的情况下 才能用递增/递减运算符(++ 和 --),不然会有未知的错误。
*(a+i)=a[i]
两种效果相等:
*(p+i)=arr[i]; //取值 (首地址+i)
p+i=&arr[i]; //取地址
int t=(*p)++; 等价于 int t=(*p=*p+1);
(*p)++ 会对原数组t产生影响,会有赋值效果。
指针变量:指向变量的地址 (变量是可以修改值的)
int a = 10;
int *p; //声明p是整型指针
*p=i; //p指向的位置,将i的值放到p指向的空间中
*p = &a; //把a地址的值放到p指向的空间
printf("%d",p); //取地址
printf("%d",*p); //取值(变量地址里的内容)
int& b = a; //&声明引用类型
p=array; (将数组array首地址 p)//数组名称本身就是一个引用
int a[5],*pa;
pa=a; //数组名就是首地址,指向的是数组的首地址a[0]
在类型保持一致的情况下 才能用递增/递减运算符(++ 和 --),不然会有未知的错误。
*(a+i)=a[i]
两种效果相等:
*(p+i)=arr[i]; //取值 (首地址+i)
p+i=&arr[i]; //取地址
int t=(*p)++; 等价于 int t=(*p=*p+1);
(*p)++ 会对原数组t产生影响,会有赋值效果。