[C]C语言教程(二)-跟着旭哥学C

作者: 程序猿_老李 | 来源:发表于2016-05-18 00:10 被阅读222次

结构体

定义:

<pre>
struct Student{ // 定义结构体Student, stu是创建的对象
char a[17]; // 结构体里面可以有多种不同类型的变量
int b;
char c;
double d;
}stu;
printf("%ld", sizeof(stu)); // 打印的是40
</pre>

分析:



假设从地址0开始给结构体空间
分配char a[17];(17字节) -> 现在偏移量是17
接下来存int(4字节), 根据对齐方式, 当前偏移量必须是4的倍数
需要补全3个字节达到偏移量20 (这3个字节什么也不存)
分配int b; 偏移量24
分配char c;(1字节), 偏移量24是1的倍数, 所以继续分配, 偏移量25
分配double d;(8字节), 根据要求偏移量必须是8的倍数, 25需要补7
补全7个字节, 什么也不存, 然后加上这8字节共40个字节

预编译, 编译, 运行

  • #######define, #import, #include, #warning, #prama mark, #error, #if, #else, #endif 等等, 只要是用#开头的, 都是预编译, Xcode一直在进行预编译.
  • Command + B 编译, 是把OC代码转换成C代码等资源.
  • 运行, 就是程序在机器中, 跑起来
  • #######define N 3 (把项目中所有N换成3)

类别名

typedef int* apple1; // 给int *起个别的名字叫 apple1
apple1 p = NULL, q = NULL; (apple1 还是int *)

static

static int a = 10; // 在编译时已经执行完了, 运行的时候不再执行, 确保a在每次运行的过程当中只初始化一次
(可以设置断点, 运行时候不会停在它身上-> 代表运行时不执行这行代码)

使用:

<pre>
void fun() {
static int a = 0; // 下次走的时候,不想让a释放
a++;
}
</pre>

const

const 声明的东西是 readonly(只读) 存放在常量区 (节省栈内存)
  • const int *a *a = 5 内容不能变 指针a可以指向别的
  • int * const a 指针不可变, 内容可以变
  • int const * const a 都不可以变 (const和int可以换位置)

相关文章

网友评论

    本文标题:[C]C语言教程(二)-跟着旭哥学C

    本文链接:https://www.haomeiwen.com/subject/sywirttx.html