您的位置:首页 > 编程语言 > C语言/C++

c点滴

2016-06-09 21:10 239 查看
1.getss()函数以回车作为结束标志,字符串中可以输入空格。

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语言