32位系统下指针是4个字节,64位系统下,指针是8个字节
变量本质:(一段连续)内存空间的别名,内存空间的标号。
修改变量有几种方法?
1、直接
2、间接。内存有地址编号,拿到地址编号就可以修改内存。
总结:1 、对内存可读可写 2、通过变量往内存读写数据 3、 不是向变量读写数据 4 、向变量代表的数据空间读写数据
指针指向谁,就把谁的地址赋给指针
char *p = NULL;
p = (char * )malloc(100); //分配内存快归操作系统去管理,如果不释放。这块内存空间永远不会被释放
free(p);
内存四区
栈区:由编译器自动分配释放,存放函数的参数值,局部变量的值
堆区:由程序员分配释放。
全局区:也叫静态区,全局变量和静态变量存放在一起的.
常量区: 字符串常量和其他常量的存储位置,程序结束后,由操作系统释放。
//
//指针变量和它所执行的内存空间变量是两个不同的概念
//在被调用函数里面malloc的内存,首地址传给别调用哪个函数有两种方法
//1 return
//2 指针做函数参数
//主调用函数分配的内存(堆 、 stack、全局区),可以在被调用函数里面使用(指针做函数参数)
//被调用函数分配的内存,malloc的内存、static内存可以让主调用函数使用,但是临时区stack属性的内存不可以
strcmp(p1,p2) //比较指针变量指向内存空间是否一致