C语言基础知识

C语言基础知识

字节(byte)和bit的区别
bit:比特是表示信息的最小单位,是二进制数的一位包含的信息或2个选项中特别指定1个的需要信息量。只有2种状态即0和1。
byte:计量存储容量的一种计量单位,通常情况下一字节等于8 bit

常用数据类型所占bit数

类型bit数
int32
short16
long32
char8

枚举
枚举类型是一种基本数据类型,不是一种构造类型,因为它无法再分解成为任何基本类型

指针
C语言中指针常量只有一个NULL

字符串常量
字符串常量在内存中存储的时候系统会自动加字符串的末尾加一个"\0"作为字符串结束标志。因此在计算长度为n个字符的字符串常量的时候,在内存中实际占有n+1个字节的存储空间。

typedef关键字
typedef是为一种数据类型定义一个新的名字,例如:typedef unsigned long uint32,这样就把uint32声明为unsigned long类型了,在使用中就等同于使用unsigned long

常量const关键字
const int *a:const用来修饰指针a所指向的对象,也就是说我们无法通过指针a来修改其指向的对象。但是指针a本身的值是可以改变的,即可以指向其他对象。
int * const a:const修饰的是指针a,因此指针本身的的值是不可改变的,无法指向其他的对象,但是其指向的对象的值是可以改变的
int const *a:与const int *a意义相同

预定义符号
_ FILE _ :正在预编译的文件名
_ LINE _ :文件当前行的行号
_ FUNCTION _ :当前所在的函数名
_ DATA _ :预编译文件的日期
_ TIME _ :预编译文件的时间
_ STDC _ :如果编译器遵循ANSI C,则为1

条件编译
#ifdef XXX
#endif

#ifndef XXX
#endif

#if defined (XXX) || defined (YYYY)
#endif

#if defined (XXX) || !defined (YYYY)
#endif

#if (defined(VEGETA) || defined(_ VEGETA _)) && defined(EGIS)

数据对齐
如果一个变量的内存地址正好是它长度的整数倍,就被称作自然对齐。例如一个32位(4个字节)类型的数据,如果在内存中的地址刚好可以被4整除(最低2位是0),那么它就是自然对齐的。

字节序
大端模式:高地址中存放数据的低字节,低地址中存放数据的高字节
小端模式:低地址中存放数据的低字节,高地址中存放数据的高字节
可以通过如下代码来验证大小端:

typedef unsigned char byte;
tyepdef unsigned int word;
word val32 = 0x87654321;
byte val8 = *((byte *)&val32);

因为0x87是高字节,0x21是低字节,val8取得是高地址中的数据,所以如果val8=0x21则是大端模式,如果val8=0x87则是小端模式

移位运算
移位(<< / >>):左移(<<)n位相当于将原数乘以2n,而右移(>>)则相当于将原数除以2n

三目运算符

a > b ? a : b;

a>b为真,结果为a,否则为b

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值