这是C/C++的内存指针系列第一篇文章。
内存
下面这图片是内存条,我们写的程序和程序运行的数据都存储在这里面。
刚学C语言时候,使用scanf()函数进行输入,printf()函数进行输出。同样是操作一个变量,scanf()的用法是scanf(“格式串”,&变量集),而printf函数则不用&符号,可以直接调用一个变量
指针可以帮我们调度内存,而scanf()函数就是指针的一个应用。函数知道变量名,但实际的操作并不是把一个值传递给变量名,而是传递给变量名对应的地址。
比如我有一个整型变量x,x对应的地址是0f304499,那么scanf(“%d”,&x)就是把输入的一个值存储到x对应的内存0f304499的位置。因为int类型占用内存空间不止一个字节,所以这个内存只是一段连续空间的开始。
具体可以使用sizeof(int)得到当前操作系统/编译器下int应该占用的内存空间大小。
2. 指针的定义和赋值
对于一个整型变量的指针,可以这样定义
int *p;
一个字符型变量,也可以定义为
char *ch;
然后可以用p=&x;对指针赋值