c点滴
2016-06-09 21:10
239 查看
1.getss()函数以回车作为结束标志,字符串中可以输入空格。
scanf()函数以空白字符作为结束标志,不可在字符串中包含空格。
2.字节对齐
a.普通变量存储是其所占字节整数倍地址。
b.结构体中存储地址是其中最大成员所占字节整数倍数。
c.以#pragma pack(n) 开始的结构体,是以n或者结构体中最大成员长度中最小者的整数倍。
3.柔性数组:在结构体中出现,出现在结构体最后,前面必须有其他成员变量。
4.4种数据类型的if判断
5.非静态局部变量在编译中开辟内存空间,运算时赋值。
6.运算数据类型的转换
7.char->int
无符号,高位补0;
有符号,首位为1,补1; 首位为0,补0;
8.||和&&应注意截断表达式。
9.子函数中若有static int a = 0; 只在第一次调用时赋值。
10.内存分布
代码区
全局数据区/静态数据区{初始化和非初始化}
常量数据区
堆,手动释放内存,地址向上增长。大小4MB左右,速度较慢。malloc,calloc,relloc在堆上申请内存。
栈,自动释放内存,地址向下增长。大小1MB左右,速度快。alloc在栈上申请内存。
11.数组定义时,[]中
必须是整型同时必须是整数,常量;
不能是0, 但柔性数组可以是0
12.二维数组中一维可省略,二维不可以。
二维数组名是第一行数组的首地址;
13.指针的理解(倒着读)
eg:
const int *pci
1>pci是一个变量;
2>pci是一个指针变量;
3>pci是一个指向整型的指针变量;
4>pci是一个指向整形常量的指针变量。
14.const
1>修饰函数参数
2>如果用于输出,那么无论采用指针还是引用传递,都不能加const;
3>const只能用于输入参数
4>值传递时,不用加,函数自动产生临时变量复制参数;
5>指针传递,加const,可以防止函数内部对参数进行修改;
6>函数返回值为值传递,加const,无意义;如果是指针传递,那么函数返回值的内容不能被修改,该返回值只能赋值给加const修饰的同类型变量。
15.
1>gets() //get a line from the stdin stream;
2>scanf()//int scanf(char *fromat [argument, …]); 返回成功赋值的数据项的个数。
16.define和typedef的区别
1>执行时间:define-预编译;typedef-编译
2>功能差异:define-不仅可以取别名,还可以定义常量;typedef-只能定义类型别名。
3>作用域不同:define-没作用域; typedef-有作用域。
scanf()函数以空白字符作为结束标志,不可在字符串中包含空格。
2.字节对齐
a.普通变量存储是其所占字节整数倍地址。
b.结构体中存储地址是其中最大成员所占字节整数倍数。
c.以#pragma pack(n) 开始的结构体,是以n或者结构体中最大成员长度中最小者的整数倍。
3.柔性数组:在结构体中出现,出现在结构体最后,前面必须有其他成员变量。
4.4种数据类型的if判断
a.if(flag)//bool flag b.if(0 == a) //int a c.if(f =< 10e-6) //float f d.if(NULL == p) // p为指针
5.非静态局部变量在编译中开辟内存空间,运算时赋值。
6.运算数据类型的转换
char/short->int->unsigned int ->long ->double
7.char->int
无符号,高位补0;
有符号,首位为1,补1; 首位为0,补0;
8.||和&&应注意截断表达式。
9.子函数中若有static int a = 0; 只在第一次调用时赋值。
10.内存分布
代码区
全局数据区/静态数据区{初始化和非初始化}
常量数据区
堆,手动释放内存,地址向上增长。大小4MB左右,速度较慢。malloc,calloc,relloc在堆上申请内存。
栈,自动释放内存,地址向下增长。大小1MB左右,速度快。alloc在栈上申请内存。
11.数组定义时,[]中
必须是整型同时必须是整数,常量;
不能是0, 但柔性数组可以是0
12.二维数组中一维可省略,二维不可以。
二维数组名是第一行数组的首地址;
memst(arr, '\0', sizeof(arr))//置零;
13.指针的理解(倒着读)
eg:
const int *pci
1>pci是一个变量;
2>pci是一个指针变量;
3>pci是一个指向整型的指针变量;
4>pci是一个指向整形常量的指针变量。
14.const
1>修饰函数参数
2>如果用于输出,那么无论采用指针还是引用传递,都不能加const;
3>const只能用于输入参数
4>值传递时,不用加,函数自动产生临时变量复制参数;
5>指针传递,加const,可以防止函数内部对参数进行修改;
6>函数返回值为值传递,加const,无意义;如果是指针传递,那么函数返回值的内容不能被修改,该返回值只能赋值给加const修饰的同类型变量。
15.
1>gets() //get a line from the stdin stream;
2>scanf()//int scanf(char *fromat [argument, …]); 返回成功赋值的数据项的个数。
16.define和typedef的区别
1>执行时间:define-预编译;typedef-编译
2>功能差异:define-不仅可以取别名,还可以定义常量;typedef-只能定义类型别名。
3>作用域不同:define-没作用域; typedef-有作用域。
相关文章推荐
- 如何组织构建多文件 C 语言程序(二)
- 如何写好 C main 函数
- Lua和C语言的交互详解
- 关于C语言中参数的传值问题
- 简要对比C语言中三个用于退出进程的函数
- 深入C++中API的问题详解
- 基于C语言string函数的详解
- C语言中fchdir()函数和rewinddir()函数的使用详解
- C语言内存对齐实例详解
- C语言编程中统计输入的行数以及单词个数的方法
- C语言自动生成enum值和名字映射代码
- C语言练习题:自由落体的小球简单实例
- 使用C语言判断英文字符大小写的方法
- c语言实现的带通配符匹配算法
- C语言实现顺序表基本操作汇总
- C语言中进制知识汇总
- C语言判断一个数是否是2的幂次方或4的幂次方
- C语言中计算正弦的相关函数总结
- 使用C语言详解霍夫曼树数据结构
- C语言实现选择排序、冒泡排序和快速排序的代码示例