内存
内存会划分成一个个的内存单元,单元大小是一个字节
每个内存单元都有一个编号
例如
32位电脑
有32个地址线(发出1/0的信号)
0000 0000 0000 0000 0000 0000 0000 0000
0000 0000 0000 0000 0000 0000 0000 0001
......
1111 1111 1111 1111 1111 1111 1111 1111
一共有2的32次方个地址序列,通过计算会有4gb的内存。
int main()
{
int a=10;//向内存申请4个字节,存储10
&a;//取地址操作符
return 0;
}
按f10进行调试,之后进行监视,得到地址所在位置;之后点击内存输入&a得到地址内存
int main()
{
int a=10;//向内存申请4个字节,存储10
// &a;//取地址操作符
printf("%p\n",&a);//%p以地址为格式打印
return 0;
}
指针变量
int main()
{
int a=10;
int*p=&a;//p就是指针变量,*说明p是指针变量,int说明所指向的对象是int类型的
char ch='w';
char*pc=&ch;
return 0;
}
内存单元
编号——>地址——>指针
存放指针的变量就是指针变量
int main()
{
int a=10;
int* p=&a;
*p=20;//解引用操作符,意思是通过p中存放的地址,找到p所指的对象,*p就是p所指对象
return 0;
}
指针变量的大小
int main()
{
printf("%zu\n",sizeof(chra*));
printf("%zu\n",sizeof(short*));
printf("%zu\n",sizeof(int*));
printf("%zu\n",sizeof(float*));
printf("%zu\n",sizeof(double*));
return 0;
}
不管是什么类型的指针,都是在创建指针变量,指针变量是用来存放地址的,指针的大小取决于一个地址存放的时候需要多大空间
32位机器的地址:32位机器的地址:32bite=4byte 则指针变量大小是4个字节
64位机器的地址:64位机器的地址:64bite=8byte 则指针变量大小是8个字节