系列文章目录
一.C语言常用关键字及运算符操作
文章目录
内存四区
C/C++语言的内存四区(栈区,堆区,全局区,代码区)(附图详解)
指针
指针概述
指针:内存类型资源地址、门牌号的代名词
指针变量:存放指针这个概念的盒子/存放地址
C语言*p、p以及&p的区别
简单来说 “ * ”是解引用操作符 “ & ”是取地址运算符
p存放的是地址,而*p是让程序去p储存的那个地址中取出数据,&p就是取指针p的地址
补; 在C 语言中 * 号有三个用途,分别是:
1.乘号,用做乘法运算,例如5*6
2.申明一个指针,在定义指针变量时使用,例如int *p;
3.间接运算符,取得指针所指向的内存中的值,例如printf(“%d”,*p);
c语言编译器对指针这个特殊的概念,有两个疑问?
1.分配一个盒子,盒子要多大?
在32bit的系统中,指针就4个字节,(可以表示2^32个地址,4GB的内存空间)
2.盒子里存放的的地址,所指向的内存的读取方法是什么?
char *p 一次读取1字节,8bit
int *p; 一次读取4字节,32bit
eg1:
#include<stdio.h>
int main()
{
int *p_1;
int *p_2;
printf("the p_1 is %u,the p_2 is %u",sizeof(p_1),sizeof(p_2))
}
结果:the p_1 is 8,the p_2 is 8 (64位处理器,8字节)
p1 = 0x1122;在32位CPU中,这个地址是不合法的
指针指向内存空间,一定要保证合法性。
eg2:
#include<stdio.h>
int main()
{
int a = 0x12345678;
int