• C语言错题总结


    格式输出

    在这里插入图片描述
    printf(格式化串,参数…)
    格式化:‘%’+格式字符(‘%’+无效字符直接打印无效字符)
    要打印 % 需要用连续两个 %

    在这里插入图片描述

    %5.3s 输出为五列,三个字符 所以为(两个空格)+ com
    %m.ns 输出占m列,但只取字符串中左端n个字符。这n个字符输出在m列的右侧(靠右对齐),左补空格。


    if else匹配,|| 运算

    在这里插入图片描述

    1. if和else的配对原则 if else是就近配对的
      在这里插入图片描述

    2. 逻辑或 || ,当 || 左边表达式成立时右边表达式不会执行

    指针

    指针运算

    在这里插入图片描述
    *运算符优先级: (后缀++) > (前缀++) > (解引用 ) > (加法+) > (以…加 += )
    A:(*p+=1)》 (*p) += 1 》 year += 1
    B:(*p)++ 》 year++
    C:++ (*p) 》 ++year
    D:*p++ 》 (p++) 因为后缀++优先级高于解引用 , 先对p指针进行后置++(后置++,先使用值再自增,效率低于前置++,因为要开辟临时空间,++i可以做左值,i++不行),然后解引用p,对p指针+1。


    在这里插入图片描述
    malloc() / free() 都只会申请释放内存空间,不会改变里面的数据(酒店退房)。

    const指针

    在这里插入图片描述
    const使用(const int *p,int const *p,和int * const p二)
    常量指针:(表示这个指针是一个指向常量的指针(变量)。指针指向的对象是常量,那么这个对象不能被更改。)
    const int* p 和 int const *p 等价,const 修饰p指针解引用之后结果,表示p所指向的内容不能改变,只能改变指向(的地址)

    指针常量:(本质是一个常量,是指针类型的常量)
    int* const p ,const修饰指针p,表示p的指向(地址)不能改变,可以解引用改变指向内容的值

    数组指针

    在这里插入图片描述
    在这里插入图片描述

    结构体对齐

    每个成员偏移地址都要对齐; 结构体整体是对齐数的整数倍
    在这里插入图片描述
    结构体内存对齐 (位段、联合union)
    位段:(内存对齐!)不支持跨平台
    应用:ip数据报头

    大小端

    在这里插入图片描述
    32位平台long long 占4字节,%d 格式输出4字节
     低地址 ————————————> 高地址
        0X 01 00 00 00 00 00 00 00
        0X 10 00 00 00 00 00 00 00
        0X 11 00 00 00 00 00 00 00
    printf是标准库的格式输出函数,开辟函数栈帧(栈向地址减小方向增长);LIFO后进先出,c,b,a入栈存储
    在这里插入图片描述

    数组

    二维数组

    在这里插入图片描述
    在这里插入图片描述


    在这里插入图片描述
    二级指针数组,是数组,数组元素是数组的元素是指针,指针所指向的地址是二维数组的地址**(二位数组的一维元素任意,二维必须是4个)**

    在这里插入图片描述

    对&arr+1相当于加整个数组的大小:&arr+1 = arr+sizeof(arr)


    在这里插入图片描述
    p+1就是二维数组加一行,*p+1指向p所指向行数的下一个元素。本题p指向二维字符数组a,二维数组的每行分别是三个字符串一维字符数组,起初p指向第一行morning, p++指向afternoon所在行,由于打印字符串的首地址等于打印字符串,所以打印完整的afternoon,而不是a的首地址

    在这里插入图片描述

    循环

    在这里插入图片描述
    A: 当while循环的条件表达式是赋值语句的时候,其含义为:先执行赋值语句,然后对左值进行判断。(如果输入不是’\n’那(getchar()!=‘\n’)为1,(ch=1)这里赋值,所以还是while还是会执行的)如果左值为0则expr为假,while退出;否则expr为真,while继续循环,所以不会出现死循环,当然这种写法是不标准的编译器会给出警告
    D: for循环初始化条件只会一次,然后死循环判断


    递归

    在这里插入图片描述
    类斐波那契
    在这里插入图片描述

  • 相关阅读:
    v-if和v-for的优先级是什么?
    吃透Chisel语言.31.Chisel进阶之通信状态机(三)——Ready-Valid接口:定义、时序和Chisel中的实现
    C会区块链论文速读-TrustCom 2023(5/6)大语言模型和区块链如何结合?
    shell字符串处理之字符串替换、截断
    JavaWeb之Servlet-----(1)
    C语言之编程基础
    Unity中用Natrue Renderer做自己的地形Terrain.
    Ajax异步请求的五个步骤
    【JavaWeb从零到一】会话技术Cookie&Session&JSP
    hutool工具包快速入门
  • 原文地址:https://blog.csdn.net/weixin_45910068/article/details/126351697