在c语言中指针说白了就是地址,但和地址又有一定的区别,首先,地址是常量,指针是变量,其他的无区别。
定义一个指针并初始化他:
private int a;
private int * p;
p = &a;
我们来分析一下这三行代码:我们定义了一个变量p,它的类型是 int *,也就是一个int 类型的指针变量,然后 p = &a; 说明把变量a的地址给了变量p,那么这时候:
printf("%p",p),控制台打印出来的是变量a的地址(变量a的地址就是p的值),和printf("%p",&a)是一个意思
printf("%d",*p),控制台打印的是变量a的值(为什么:*p表示对应的地址对应的值)
比如:
int b;
scanf("%d",&b);
第二条语句中&b就表示b在内存中的地址。
再说一下指针和数组:
int a [5] = {};
int *p = &a;
我们都知道单个a表示a[0],那么a[1]用那种方式怎么表示呢:首先a[0] = *p,那么*(p + 1)就表示a[1]了,我们可以这样理解:*(p + 1)太麻烦了,于是有了[]这种形式的写法。