首先,明确一点:访问内存时,首先要得到地址,有地址才能找到内存单元!!!那么地址从何而来呢?
内存空间为了有效管理
1.把内存空间划分为一个个有效的内存单元 1个字节 == 8个比特位
2.给每个内存单元 编号==地址==指针
未来只要指定一个地址,通过地址就能够找到对应的内存单元
口头语中说的指针:一般指的是指针变量
#include<stdio.h> int main() { int a = 10; //& - 取地址操作符 int * pa = &a;//0x0012ff48 -内存的编号==地址==指针, pa叫指针变量 //* 是在说明pa是指针变量 //int 是在说明pa指向的是int类型的变量 *pa = 20;//* 解引用操作符 - 通过地址找到地址所指向的对象。*pa就等价于a printf("%d\n", a); return 0; } /*总结: 1. 内存会被划分以字节为单位的一个个的内存单元 2. 每个内存单元都有编号,编号 =地址=指针 3. C语言中创建的变量,其实是向内存申请一块空间,比如:int a = 10,就是向内存申请4个字节的空间,每个字节都有地址 4. &a的时候,拿出的是4个字节中地址较小的那个字节的地址(编号) 5. 这个地址要存储起来,给一个变量,这个变量是用来存放地址(指针)所以叫指针变量:int *pa = &a; 6. pa中存放的是a的地址,要通过pa中的地址找到a,怎么写?*pa--> 通过pa中的地址找到a *pa = 20;*/
探讨指针变量的大小
int main() { char* pc; short* ps; int *pi; double* pd; printf("%d\n", sizeof(pc)); printf("%d\n", sizeof(ps)); printf("%d\n", sizeof(pi)); printf("%d\n", sizeof(pd)); return 0; } //如果是32位操作系统,指针变量大小就是4个字节 //如果是64位操作系统,指针变量大小就是8个字节