博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C语言基础小结(一)
阅读量:5149 次
发布时间:2019-06-13

本文共 2144 字,大约阅读时间需要 7 分钟。

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=下一个数组的首地址

 

转载于:https://www.cnblogs.com/woniuysniu/archive/2012/03/25/2416749.html

你可能感兴趣的文章