C基础知识点补充(10/22)

1.基本的数据类型:

数据类型有基本数据类型(空类型,字符型,数值型)和复合数据类型(数组,结构,联合,枚举,指针)。

实型数据,有单精度实型和双精度实型。

整形有短整型(有符号及无符号),整形(有符号及无符号),长整形(有符号及无符号)。

char 字符型

unsigned char 无符号字符型 取值范围0-255

signed char 有符号字符型 -2的7次~2的7次-1

int 整形 -2的31次~2的31次-1

unsigned int 无符号整形 0~2的16次-1

signed int 有符号整形 -2的31次~2的31次-1

float 浮点型 10的-38次~10的38次

double 双精度型 10的-308~10的308次


思考:字符是有符号整数还是无符号整数??

例如:int main()

{

char a[1000];

int i;

for(i=0;i<1000;i++)

{

a[i] = -1-i;

}

printf("%d\n",strlen(a));

return 0;

}

结果输出255.


int i=-20;

unsigned int j=10;

i+j=?

结果是-10.



2.声明与定义:

int i;//定义一个全局变量

extern int i;//声明一个全局变量

int i=0;//定义一个全局变量并且赋予初值

extern int i=0;//定义一个全局变量并且赋予初值

定义:创建一个变量,为其分配内存空间,一个变量只能定义一次;

声明:告知编译器,这个名字的变量已经对应一块内存,但并未分配内存空间


3.关键字:

register:请求编译器尽可能将变量存在CPU内部寄存器中

注意:修饰的变量的类型必须是CPU能够接受的,用register声明的变量可能不是在内存中进行存储,所以不能用&符号进行取地址操作。


static关键字和const关键字。(略)

使用const关键字的好处??给阅读代码的人传达非常有用的信息,可以防止意外修改一些只读数据,const对编译器优化也是一个重要提示,编译器也许会把const变量优化。

volatile关键字的作用:

(1)告诉编译器volatile变量在两个操作之间不会被缓存在寄存器中。

(2)不做常量合并,常量传播等优化。

(3)对volatile变量的读写不会被优化掉。

使用场合:(1)中断服务程序中修改的可供其他程序检测的变量需要加

(2)多任务环境下共享的标志要加

(3)存储器映射的硬件寄存器通常也要加说明,因为每次对他的读写可能有不同意义。

extern关键字:表明变量或函数在外部文件定义,注意C++中的extern C。

4.联合体union:

当多个基本数据类型或复合数据结构要占用同一片内存时,使用联合体。

用联合体可以判断当前系统的大小端序。所谓的大端序,即数据的高位存放在 低地址单元。小端序是指数据的低位存放在低地址单元内。


5。枚举类型--enum;

enum sun{a,b,c};//定义一个枚举类型变量叫sun,枚举元素为a,b,c,又叫枚举常量。

可以在声明的时候进行赋值操作,若不进行元素赋值,则系统从0开始自动递增的进行赋值,若只顶以了第一个元素,则系统依次进行+1操作。


6.typedef关键字:

为一种数据类型定义一个新名字。


7.宏#define(定义常量与命令)

举些例子,#define MAX(a,b) ((a)>(b)?(a):(b))

函数式使用宏定义可以提高代码的执行效率,类似C++下的内联函数。


8.while,for语句:

C++/C循环中,for语句使用频率最高,while其次。提高循环体执行效率的基本办法是降低循环体的复杂性。

在多重循环中,应将最长的循环放在最内层,最短的循环放在最外层,减少CPU跨且循环层次数。


9.swaitch语句的使用注意:

(1)每个case语句需要加break

(2)最后要加default分支。


10.goto语句的使用隐患:goto语句可以实现灵活跳转,但是如果不加限制,则会破坏结构化的程序设计风格。

发布了61 篇原创文章 · 获赞 6 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/shayueqing/article/details/12952079