c语言笔记

c语言笔记


  1. a++,b=a*3 在此表达式中,先递增a,然后再第二个子表达式中使用a的新值,作为序列点的逗号保证了左侧子表达式的副作用在对右侧表达式求值之前发生,而整个逗号表达式的值是右侧项的值,例如:a=(100,200);则a的值为200;

  2. 逻辑表达式的求值顺序是从左往右。一旦发现有使整个表达式为假的因素,立即停止求值

  3. 条件运算符?: x=(y<0)? -y : y;如果y小于0,那么x=-y;否则,x=y。

  4. 缓冲区:(1)无缓冲输入(2)缓冲输入:完全缓冲I/O和行缓冲I/O。

  5. c99规定,可以在初始化列表中使用带方括号的下标指明待初始化的元素:int arr[6]={[5] = 212};//把arr[5]初始化为212

    int days[12]={31,28,[4]=31,30,31,[1]=29}; 则数组初始化结果:31 29 0 0 31 30 31 0 0 0 0 0
    (1)指定初始化器后面有更多的值,那么后面的这些值将被用于初始化指定元素后面的元素;(2)如果再次初始化指定的元素,那么最后的初始化将会取代之前的初始化。

    `

     //若未指定元素大小
     int arr1[]={1,[6]=23};
     int arr2[]={1,[6]=4,9,10};
     //编译器会把数组的大小设置为足够装得下初始化的值。
     //所以arr1有7个元素,而arr2有9个
    

    `

  6. 从ANSI C标准起,如果字符串面量之间没有间隔或者用空白字符分隔,C会将其视为串联起来的字符串字面量。例如:
    char g[50]="abcd""efghij" "klmn";

    则等价于
    char g[50]="abcdefghijklmn";

  7. 把字符串看成指针

    `

     printf("%s,%p,%c\n","We","are",*"family!");
     /*上面语句的结果输出为:
     We,
     "are"代表一个地址则将打印字符串首字符的地址,
     字符串所指向地址上存储的值's';*/
    

    `

  8. 字符串输入:(1)分配空间,如果没有预先分配空间,容易导致擦除程序数据或代码,从而导致程序异常中止。

  9. const char * pc =“abcd”;const只能保证被pc指向的字符串内容不被修改,但是无法保证pc不指向别的字符串。

  10. 作用域:块作用域、函数作用域、函数原型作用域或文件作用域。

  11. 链接:c变量具有3种链接属性:外部链接,内部链接和无链接。具有块作用域、函数作用域、函数原型作用域的变量都是无链接变量,这意味着,这些变量属于定义它们的块、函数或原型私有。具有文件作用域的变量可以是外部链接或内部链接。外部链接变量可以在多文件程序中使用,(带有static描述的变量)内部链接变量只能在一个翻译单元中使用。

  12. const类型限定符:

    在指针和形参声明中使用const:

    	`
    		const float * pf;//pf指向一个float类型的const值,pf指向的值不能更改,而pf本身的值可以更改,可以设置其指向其他const值
    		float * const pt;//pt是一个const指针,创建的指针pt的值不能更改,pt必须指向同一个地址,但是它所指向的值可以改变
    		const float * const ptr;//表面ptr既不能指向别处,它所指向的值也不能改变
    		const float * pfc;//与float const * pfc;等价说明该指针不能用于改变它所指向的值
    		即const放在*左侧任意位置,限定了指针指向的数据不能改变;const放在*右侧,限定了指针本身不能改变
    	`
    
  13. volatile类型限定符:

    用于告知计算机,代理(而不是变量所在的程序)可以改变变量的值。例如,一个地址上可能存储着当前的时钟时间,无论程序做什么,地址上的时间总是随着时间的变化而变化。可以用const和volatile同时修饰一个值。例如,通常用const把硬件时钟设置为程序不能更改的变量,但是可以通过代理改变,这时就用volatile。两个限定符顺序不重要。

  14. restrict类型限定符

    restrict关键字允许编译器优化某部分代码以更好地支持计算。他只能用于指针,表明该指针是访问数据对象的唯一且初始的方式。在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值