C基础知识点补充(10/22)
2013-10-22 20:21
246 查看
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语句可以实现灵活跳转,但是如果不加限制,则会破坏结构化的程序设计风格。
数据类型有基本数据类型(空类型,字符型,数值型)和复合数据类型(数组,结构,联合,枚举,指针)。
实型数据,有单精度实型和双精度实型。
整形有短整型(有符号及无符号),整形(有符号及无符号),长整形(有符号及无符号)。
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语句可以实现灵活跳转,但是如果不加限制,则会破坏结构化的程序设计风格。
相关文章推荐
- 10、Android 插件开发(基础知识)
- SQL Server 索引基础知识(8)--- 数据基本格式补充(转自蝈蝈俊.net)
- linux基础知识补充
- java基础知识10-javaIO
- 找工作笔试面试补充基础知识(1)---内存对齐
- 背水一战 Windows 10 (50) - 控件(集合类): ItemsControl - 基础知识, 数据绑定, ItemsPresenter, GridViewItemPresenter, ListViewItemPresenter
- 笔记10--js基础知识
- c~c++的基础知识2(补充c)
- python-基础知识10
- JAVA学习【10】JVM基础知识整理
- linux学习入门 基础部分(10)[1.ip基础知识2.配置ip3.gateway 网关 4.dns6 压缩,解压]
- JavaSE复习之一 基础知识:Java的基础语法 补充(2)
- java基础知识10(TCP:客户端并发上传图片)
- JavaSE复习之一 基础知识:Java的基础语法 补充(6)
- python入门(九)python基础知识点补充
- JavaSE复习之二 基础知识:面向对象 补充(6)
- JS基础知识补充和性能优化知识学习(CHROME小技巧)
- 2017-11-5Linux基础知识(10)bash基础特性
- OC基础—内存管理之@property及其参数(补充新知识:循环引用和@class)
- C++基础知识复习-【1】进制转换系列之16进制转10进制