pragma mark - 变量内存分析
/**
1. 字节和地址
内存就是字节,内存以“字节为单位”
2. 变量的存储 占据的存储空间
一个变量所占用的存储空间,不仅跟变量类型有关,而且还跟编译器环境有关。同一种类型的变量,在不同编译器环境下所占用的存储空间又是不一样的
* 所占用字节数跟类型有关,也跟编译器环境有关
* 内存由大到下寻址
* 变量存储单元的第一个字节的地址就是该变量的地址
* 任何变量在内存中都是以二进制的形式存储。一个负数的二进制形式,其实就是对它的正数的二进制形式进行取反后再+1(取反的意思就是0变1,1变0)
编译器
类型 16位 32位 64位(只关注64 因为是Mac都是64位的)
char 1 1 1
int 2 4 4
float 4 4 4
double 8 8 8
short 2 2 2
long 2 2 2
long long 2 2 2
void* 2 4 8
*/
pragma - mark -代码
#import <Foundation/Foundation.h>
int main()
{
// 内存寻址从大到小 , 如果按照这种规则,那么先定义的变量内存地址一定大于后定义的变量
/**
* 比如当前地址有 0ffc1~0ffc16
*/
int number = 0; // 0ffc13~0ff16
int value = 0; // 0ffc9~0ff12
// 如何获得变量的详细地址(变量地址),&变量名称
// 利用%p展位符来打印变量的详细地址
// 输出的是一个十六进制的数
// a/b/c/d/f/j
// 10/11/12/13/14/15
// 10/11/12/13/14/15
printf("%p\n",&number);// 先定义的 内存地址越大
printf("%p\n",&value);
return 0;
}