C语言基础小结(一)

原创 2012年03月25日 16:16:10
1. 编写原代码(.c)->预处理(预编译)(.i)->编译(.s)->汇编(.o/.obj)->连接->执行
2. C语言不同于C++,C中变量必须先定义后使用,不能在定义变量的同时使用变量。
变量名只能由字母、数字和下划线组成,且只能以字符或者下划线开头。
3. 在函数内定义的变量称为局部变量。
4. 局部变量仅在定义它的代码块内部有效,出了该代码块变量就消失。
5. 在任何函数外定义的变量称为全局变量。
6. 全局变量在程序中都是可见的,可以被任何代码块所用。
7. C99关键字
auto 声明自动变量,缺省时编译器一般默认为auto
int 声明整型变量
double 声明双精度变量
long 声明长整型变量
char 声明字符型变量
float 声明浮点型变量
short 声明短整型变量
signed 声明有符号类型变量
unsigned 声明无符号类型变量
struct 声明结构体变量
union 声明联合数据类型
enum 声明枚举类型
static 声明静态变量
switch 用于开关语句
case 开关语句分支
default 开关语句中的“其他”分支
break 跳出当前循环
register 声明寄存器变量
const 声明只读变量
volatile 说明变量在程序执行中可被隐含地改变
typedef 用以给数据类型取别名(当然还有其他作用)
extern 声明变量是在其他文件正声明(也可以看做是引用变量)
return 子程序返回语句(可以带参数,也可不带参数)
void 声明函数无返回值或无参数,声明空类型指针
continue 结束当前循环,开始下一轮循环
do 循环语句的循环体
while 循环语句的循环条件
if 条件语句
else 条件语句否定分支(与if连用)
for 一种循环语句(可意会不可言传)
goto 无条件跳转语句
sizeof 计算对象所占内存空间大小
8. case后只能是整型或者字符型常量或者常量表达式
9. break是终止本层循环;
continue是终止本轮循环,然后继续下一轮循环。
10. const修饰的变量为只读变量,近水楼台先得月,谁紧随其后,它就修饰谁,谁就是readonly
11. volatile修饰的变量旨在告诉编译器此变量是不稳定的,随时可能会被更改,每次取值都必须到内存当中去取,不得对它进行优化。
12. extern修饰的变量或函数就是告诉本文件中所有成员,这家伙不是土著,而是老外,这家伙的家乡(定义)在外国(外面的文件中)。
13. sizeof是个关键字,不是函数,当sizeof在计算变量所占空间大小时,括号可以省略,但在计算类型所占空间大小时,括号不能省略;sizeof是在编译的时候就进行计算!
14. 正数的补码和原码相同,负数的补码最高位为1,其余各位按位取反后+1
15. Char a[1000];
int i;
for(i=0;i<1000;i++)
{
a[i]=-1-i;
}
printf(“%d\n”,strlen(a));
这里打印结果为255,原因为负数的存储是以补码形式,当i=255时,a[255]=-256,-256的绝对值的原码是100000000,它的补码是绝对值的原码的最高位为1,其余按位取反,然后加1,结果仍是100000000,该值为0;
strlen计算的是字符串到0为止(不包括0)
16. 空结构体的大小为1个字节(任何类型都有大小,至少为1个字节)
17. 一个union只配置一个足够大的空间用来容纳最大长度的数据成员,同一时间只能存储一个数据成员,所有数据成员具有相同的起始地址。union主要用来压缩空间。
18. 存储模式:大端模式和小端模式。大端模式字数据的高字节存储在低地址中,小端模式刚好相反。
19. 枚举enum,枚举常量默认从0开始,逐个递增1;后一个常量的值=前一个常量值+1
20. 预算符##:#define connect(a,b) a##b预处理后的结果就是connect(a,b)的地方替换成ab
21. 指针,就是存放内存地址的变量,大小固定,32位系统中的大小为4个字节。
22. C语言中左值只能是非只读变量;
23. 当数组名作为右值时,相当于该数组首元素的地址,数组名不能作为左值;
24. 对指针进行加1操作,得到的是下一个元素的地址,而不是在原有地址值上直接加1,一个类型为T的指针的移动,以sizeof(T)为移动单位;
int a[5]={1,2,3,4,5};
int *ptr=(int *)(&a+1);
printf(“%d,%d”,*(a+1),*(ptr-1));
打印结果为2,5
(&a+1)取数组的首地址,然后在该地址的基础上加上sizeof(a)的值
25. a是一个数组,a=&a,但意义完全不一样,a是数组的首个元素的地址,&a是表示整个数组的首地址,a+1=a[1],&a+1=下一个数组的首地址



C语言基础小结(二)

26. 位段:指定结构体中成员变量所占的位数(以位的形式紧凑存储) unsigned char/int aaa:1 这里只能是unsigned char/int类型 27. 指针数组:int *...

C语言I/O小结 poj百练2804字典(基础题)

这个题目字典的输入是一个问题 遇到空行结束 那么如何使用好scanf 和 gets呢,数据量大肯定还是要用C的I/O的   sscanf是一个很不错的函数 刚好解决了这个问题 我们知道sc...
  • cfzjxz
  • cfzjxz
  • 2012年05月07日 15:55
  • 1165

C语言: fwrite和fread函数的用法小结 (网上摘抄,方便以后查询)

转自:http://purpleroom.blog.sohu.com/133812394.html fwrite和fread是以记录为单位的I/O函数,fread和fwrite函...

基于BP神经网络的简单字符识别算法自小结(C语言版)

BP神经网络学习小结

C语言小结--数组

1、什么是数组(1)从内从角度来说,数组就是一次分配多个变量,而且这些多个变量在内存中是依次相连的。 (2)从编译器角度来说,数组变量也是变量,和普通变量没有什么本质区别,变量的本质就是一个地址,这...

<C语言全局变量小结>

在这之前,有一个C知识点要回顾一下:那就是,在C语言中,每一个变量和函数都有两个属性,它们分别是”数据类型“和”存储类别“,提这个是因为很多时候往往只知道”数据类型“这个属性而把”存储类别“这个重要的...

【C语言】【指针相关知识小结】

1.int *p = NULL 和 *p = NULL的区别        int *p = NULL指的是将一个指针初始化为NULL,具体过程为 int *p; p = NULL。2.&a与a的区别...

C语言宏定义作用、使用方法小结(2)

要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。   在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成...

C语言qsort和C++sort的用法小结和区别比较

第一项: qsort: (只是些概念,了解一下就可以) 基本快速排序的方法,每次把数组分成两分和中间的一个划分值,而对于有多个重复值的数组来说,基本排序的效率较低。集成在C语言库函数里面的的qso...

C语言小结(一)

一、伪函数 结构体或类通过函数重载调用类似方法一样调用 重载关键字operator class Hello{   public:     void operator ()(){      ...
  • su_33
  • su_33
  • 2016年03月31日 09:48
  • 45
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C语言基础小结(一)
举报原因:
原因补充:

(最多只允许输入30个字)