在哪个网站做销售比较好/网络营销好找工作吗
下一节连接一文看懂C指针(2)——多级指针
指针初始化过程
- 定义一个变量a:int a=3;
内存中的值 | 地址 |
---|---|
3 | 0XA0(&a) |
此时&a(a的地址)为0XA0
- 定义一个指针p: int *p;
内存中的值 | 地址 |
---|---|
p指针的值 | 0XB0(&p) |
- 对指针进行赋值
p=&a; //意思是把&a(即a的地址)赋值给p这个指针
内存中的值 | 地址 |
---|---|
p=p指针的值(0XA0) | 0XB0(&p) |
- 取地址所指向的值
*p=3;
指针三个易混淆结构
p:是指针的本体,p存放的是一个地址,例子中存放的是0XA0,即p=0XA0
&p:是p指针本身的内存地址,例子中为0XB0,即&P=0XB0
*p:是指针存放的地址所对应的值,例子中为3,即 *p=3
对等关系:
p = &(*p) = &a
*p = a
代码
C语言代码演示:
#include<stdio.h>void test(int* p)
{*p = 1111;
}int main()
{int *p = NULL;int a = 2333;p = &a;//*p是p指针存放地址对应的值//p是p指针存放的地址//&p是p指针本身的地址//&(*p)是(p指针存放地址对应的值)的地址//a是a的值//&a是存放a的地址//p = &(*p) = &a// *p = aprintf("*p = %d , p =%d , &p = %d , &(*p) = %d , \na = %d , &a = %d\n", *p, p, &p, &(*p), a, &a);test(p);printf("*p = %d , p =%d , &p = %d , &(*p) = %d , \na = %d , &a = %d\n", *p, p, &p, &(*p), a, &a);getchar();return 0;
}
程序运行截图: