C深度解刨笔记

翻到一个PDF C语言深度解刨 ,以前准备面试的时候有准备。
偶尔翻翻,发现网上笔记不少,面试用。

第一章 关键字

定义和声明

定义:编译器创建对象,分配内存。不可多次定义。

声明:告诉编译器,对象已经分配占位。可多次声明。

auto:默认都是auto.

register:小于CPU寄存器变量长度,类型与CPU寄存器符合。

static:

    第一个作用:修饰变量,存储在内存静态区域。
        静态全局变量:作用于限于定义它的文件中,其他文件extern也无效。
        静态局部变量:定义在函数体内,只能在本函数体内使用。
        static修饰的变量存储在静态区域,函数结束后不会销毁。static值也不会销毁,下次还会使用。
static int j;
void fun1(void)
{
    static int i = 0;
    i ++;
}
void fun2(void)
{
    j = 0;
    j++;
}
int main()
{
    for(k=0; k<10; k++)
    {
        fun1();
        fun2();
    }
return 0;
}

修饰函数:函数前加static成为静态函数,作用于限于本文件(内部函数)。
好处:不用担心与其他文件中的函数同名。
static 在C 中有了第二种含义:用来表示不能被其它文件
访问的全局变量和函数。

size: 关键字,非函数。

`sizeof(int)*p 表示什么意思?
留几个问题(讲解指针与数组时会详细讲解),32 位系统下:

int *p = NULL;
sizeof(p)的值是多少?
sizeof(*p)呢?
int a[100];
sizeof (a) 的值是多少?
sizeof(a[100])呢?//请尤其注意本例。
sizeof(&a)呢?
sizeof(&a[0])呢?
int b[100];
void fun(int b[100])
{
sizeof(b);// sizeof (b) 的值是多少?
}

signed,unsigned

if,else

if后面带;号,表示结束语句。
如有可能写成 if(!b) null;

bool 与零值比较

bool bTestFlag=FALSE;
if(bTestFlag)
if(!bTestFlag)

float变量与零值比较
    `#define EPSINON 0.00000001`
    float fTestVal =0.0;
        if(fTestVal>=-EPSINON)&&(fTestVal<=EPSINON);//EPSINON精度

指针变量与“零值”比较

int *p=NULL;
if(NULL==p);
if(NULL!=p);

左值问题,避免赋值给p.==会被写成=。

switch case

switch(Variable)
{
    case Value1:
        //program code
        break;
    case Value2:
        //program code
        break;
    case Value3:
        //program code
        break;
    default:
        break;
}

每个case结尾不要忘记break;
必须保留default,不是语法上问题。
case后面只能是整数或字符类型常量或常量表达式。
case语句排列建议:
1.按照字母或者数字顺序
2.把正常情况放在前面,异常放在后面处理。
3.按照执行频率排列case语句。

do while for关键字

break与continue

break,终止本次循环
continue,终止本次(本轮)循环。

goto关键字

void

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值