内存、地址和指针
正文
内存可以简单看作是具有箱牌的箱子顺序排列,内存具有两部分,箱子外边的箱牌即地址,箱子内部存放不同数据类型的空间即内存。由于存放的数据类型不同所以箱子内部空间大小不同,而且按不同的取出方式从空间内部取出数据,其表达的意思也不同,这些规则构成了数据类型。
指针变量简称指针,其本质就是一个变量,其内部空间存放的是它所指向的数据类型变量的地址,通俗的将就是指针类箱子内部放的是其他类型箱子的箱牌,专业术语是指针变量内部存放的是其他变量的地址。当你打开指针变量的箱子,看到的是另一个箱子的箱牌,然后你就会到那个箱子去取真正的数据,这就是指针取值,及访问指针变量所指向变量的值,符号为*,而指针类箱子存放其他变量箱牌的过程就是指针变量取址,及指针的赋值过程,符号为&。
举例:
#include "stdio.h"
int main(void)
{
int *p; //定义一个指针变量p,p指向的变量数据类型为int类型,未初始化
int a=10; //定义并初始整形变量a
int b=0; //定义并初始整形变量b
p = &a; //指针p赋值,及把变量a的地址赋值给指针p,注意数据类型要匹配
printf("b = %d\n",b); //b=0;
b = *p; //取指针p所指向的变量a的值,赋值给变量b;b的值变为10;
printf("b = %d\n",b); //b=10;
}