运算符sizeof
:可以给出某个类型或者变量在内存中所占据的字节数。
sizeof(a)
sizeof(double)
运算符&
:获取变量的地址
int i;printf("%p",&i);
**指针 *p ** :保存地址的变量
int i=6;
int *p=&i;//把i的地址传递给指针变量p
*p=10;//访问i的地址p,对i直接进行读写操作
函数参数表中的数组是指针
下面两种方式等价:
void min_max(int a[], int length) //起泡法排序;
void min_max(int *a, int length) //起泡法排序;
数组变量本身是特殊的指针
- 数组变量本身表达地址,取值时无需
&
- 数组单元表达变量,取值需要
&
[]
运算符也可以对指针做*
运算符也可以对数组做- 数组变量是
const
的指针,不能被赋值
#include<stdio.h>
int main() {
int a[3]={0,1,2};//int a[]相当于int *const a
int *p=a; //数组变量本身表达地址,取值时无需&
int *pi=&a[1];//数组单元表达变量,取值需要&
a[0]=10;
a[1]=20;
printf("p[0]%d\npi[0]%d\n",p[0],pi[0]);//[]运算符可以对指针做,
//p[0]表示该地址的四个字节,指针p相当于数组p[1]。
printf("%d",*a);//*运算符也可以对数组做;a表示数组的首地址;*a表示变量a[0];
}