if(a <= 0)
推荐:(a < 1)
逼近条件- 变量意义单一 函数意义单一
- 数据区 存放 : 全局变量 静态局部/全局变量 字符串常量
代码区
堆区
栈区 - 编译时进行类型检查
- 数组名 例外(1)siezof 整个大小 首元素地址
- 函数在栈帧中退出时 栈帧被回收 但其中的数据还有残留 只有在另一个函数需开辟此栈帧前 window系统会用ccccccccc清理
- 两个数组名 不可以相互赋值 原因两个数组的长度不一定可以接纳 例如arr[10]=brr[3] 会爆掉
- return 建立与函数名同类型的临时量存放数据 结束当前函数
- 内置类型 char; short; int; long int; long long; float; double;
- 返回多个值 可以设计为变量类型一致的结构体
- 能用库函数 就不自己写 ==>程序的可移植性高
- 是指针 就开辟4字节
- 大端 高地址(0x12345 ~ 0x12300)对应存放高数位(12 34 56 78 90) 1234567890
- 类型决定指针
指针加一的能力
指针对内存的解释能力 - 结构体
struct Foo
{
int *p;
};
struct Foo f1;
f1.p = malloc(45);
struct Foo f2 = f1; // 两者同时指向同一空间 浅拷贝 一个指针修改 另一个也受影响
free(f1.p); // 释放了f1.p指向的空间
int a = *(f2.p); // f2.p 悬空 无指向 所以f2.p访问无效
struct Foo
{
int a[3];
};
struct Foo f1 = {1,2,3};
struct Foo f2 = f1; // 深拷贝
int arr[3] = {1,2,3};
arr += 1;// 错误操作 数组名不可以被赋值