简单总结

C语言程序基本编程和规范

  • 缩进:凡是有代码块的地方都必须缩进,一对大括号 { } 代表一个代码块
  • 空格:标点符号后面,一般加空格
  • 空行:不同逻辑段落中间,一般加空行
  • 符号命名:尽量能一望便知,做到顾名思义,避免使用无意义字符

整型数据溢出问题

当我们在计算机中要存储的数超出了该类型数可以表示的范围就会发生溢出。其核心思想是超出可以表示的范围。就像向杯子中倒水,水超出了杯子的容量,就会溢出来。

整型数据的原码与补码

  • 原码、反码、补码的表示对于正数来说都是一样的,而对于负数来说,三种码的表示确是完全不同的.对于计算机基础电路设计来说判别第一位是符号位是非常难和复杂的事情,为了让计算机底层设计更加简单,人们开始探索将符号位参与运算,并且采用只保留加法的方法,我们知道减去一个数,等于加上这个数的负数,即:1-1 = 1 + (-1) = 0,这样让计算机运算就更加简单了,并且也让符号位参与到运算中去。
    1.使用原码运算
    计算十进制表达式:1-1 = 0;
    1 - 1 = 1 + (-1)
    = 原:[ 0000 0001 ] + 原:[ 1000 0001 ]
    = 原:[ 1000 0010 ] = -2
    如果用原码表示,让符号位也参与计算,对于减法来说,结果是不正确的。这也是计算机内部在存储数据时不使用原码的原因,为了解决这一问题,出现了反码。
  • 2.使用反码运算
    计算十进制表达式:1-1 = 0

    1 - 1 = 1 + (-1)

    = 原:[ 0000 0001 ] + 原:[ 1000 0001 ]

    = 反:[ 0000 0001 ] + 反:[ 1111 1110 ]

    = 反:[ 1111 1111 ] = 原: [ 1000 0000 ]
    = -0

    通过计算我们发现用反码计算减法,结果的真值部分是正确的。而唯一的问题出现在"0"这个特殊的数值上,虽然人们理解上+0和-0是一样的,但是0带符号是没有任何意义的,而且会有[0000 0000]原和[1000 0000]原两个编码表示0。为了解决这一问题,出现了补码。
  • 3.使用补码运算
    1 - 1 = 1 + (-1)
    = 原:[ 0000 0001 ] + 原:[ 1000 0001 ]
    = 补:[ 0000 0001 ] + 补:[ 1111 1111 ]
    = 补: [ 0000 0000 ] = 原: [ 0000 0000 ] = 0

格式输入函数scanf()的使用注意事项

scanf()和 printf()类似,也使用格式字符串和参数列表。scanf()中的格式字符串表明字符输入流的目标数据类型。两个函数主要的区别在参数列表中。printf()函数使用变量、常量和表达式,而scanf()函数使用指向变量的指针。这里,读者不必了解如何使用指针,只需记住以下两条简单的规则:

  • 如果用scanf()读取基本变量类型的值,在变量名前加上一个&;
  • 如果用scanf()把字符串读入字符数组中,不要使用&。
    当我们调用scanf函数的时候,该函数就会从输入缓冲区中去获取指定格式的数据,如果没有发现我想要的数据(这种格式的数据),那么该函数直接失败返回。原来的数据还是存在输入缓冲区中。

C语言中的字符串

ASCII码

位运算中的位或和位于运算

位运算中的异或运算

标准输入缓冲区细则

多路分支基本语法和注意事项

编译系统如何解析数组定义

编译系统如何解析指针定义

变长数组的使用场景和注意事项

C语言复杂声明的解读方式

数组在表达式中的多重含义

数组作为函数传递的注意事项

如果实参是数组名时,传递的是数组的首元素地址。形参则需要定义一个对应的指针指向该首元素地址。

什么是字节序

字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。
这里我们引入大小端模式的概念。

  • 一个多字节存储单元的低地址存储数据的低有效位还是高有效位。
    大端模式:低地址存储数据的高有效位。
    小端模式:低地址存储数据的低有效位。

指针数组与数组指针的概念区别

  • 数组指针就是一个指针变量,里面存储着整个数组的地址。
  • 数组指针是一个指针来的,这个指针是指向一个数组的。
  • 指针数组是一个数组来的,这个数组每一个成员都是一个指针变量。

image

关键字static

什么是生命周期:

生命周期指的是,变量什么时候出现在内存空间到什么时候释放的。
什么是作用域:

这个变量能在程序中发挥作用的范围。

  • 全局变量:
    作用域:在原文件全局中可见,跨文件可见(未初始化的全局变量,静态变量存储在数据段.bss段中,且会对其初始化赋值为0,初始化的全局变量静态变量存储在数据段中的.data段中)。

    生命周期:
    在程序开始时就申请全局变量的内存空间,在程序结束时,全局变量的内存空间就会释放。
  • 局部变量:存储在栈空间中。

    作用域:在哪个函数体内申请的就作用在哪个函数中。

    生命周期:在函数体内申请的,在变量定义的时候开始申请的,该函数返回时,内存就释放。
posted @   芋圆芋泥  阅读(35)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示