c点滴

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-有作用域。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值