C基础——C语言总结




1、数据类型
   基本数据类型:整形:int(4个字节,%d)、long int(8个字节 %ld)、short int(2个字节)、unsigne int、signed int(4个字节);
                           浮点型:float(4个字节 %f)、double(8个字节 %f);
                           字符型:char(1个字节 %c %d)。
   构造类型:数组:只能由同一种数据类型组成;eg:int ages[3];
                    结构体(struct):可以由不同类型的数据组成。
                    枚举类型(enum):当一个变量祝允许有几个固定的取值时。

2、关键字与标识符
   关键字:关键字是属于系统自带的,是具有特殊含义的符号。
   标识符:是程序中自定义的一些符号和名称。
           
3、算数运算,逻辑运算,位运算分类
   算数运算:+ - * / % ++  --
   逻辑运算:与&&  或||  非!
   位运算:与&  或|  异或^  按位取反~    左移<<     右移 >>
   优先级问题:算数运算>关系运算>逻辑运算

4、进制问题
   二进制:0B开头  eg:0B11 代表11为二进制
   八进制:0开头   eg:011 代表11为八进制
   十六进制:0x开头 eg:0x11代表11为十六进制

5、代码段作用:主要是为了能够快速回收不再使用的变量内存。

6、scanf函数注意点
1> scanf函数只接收变量的地址;
2> scanf函数是一个阻塞式的函数,等待用户输入;
3> 一次性输入多个值,并且以某个符号隔开,则用户输入时必须以该符号隔开;
4> 如果scnaf参数之间分隔符是空格时,输入时可以用空格、tab和回车键代替;
5> scanf函数中不能写\n换行。例如:scanf("%d\n",&a);(错误)。


7、const修饰变量表示变量的值是常量,不可以修改。

8、sizeof的用法
   sizeof是用来计算一个变量、常量或数据类型所占用的内存字节数。
    strlen:用来计算字符串的长度,不包括\0,如果遇到\0则停止计算。

9、if与switch的区别
    if:if属于判断语句,每次只有一个大括号内代码体被执行。
    switch:1>根据表达式的值将流程转化到某个case。
          2>如果case后没有break,则会一直执行下去,直到遇到break为止

10、循环结构
    for循环:首先进行对条件进行判断,然后再循环,处理能力最强。
    while循环:首先进行对条件进行判断,然后再循环。
    do..while循环:首先循环一次,然后再对条件进行判断。

11、break与continue的作用
    break:退出循环。
    continue:退出本次循环,进入下次循环。

12、++a 和a++的区别
    例如:
    int a = 10;
    int b = ++a;
    ++a 的意思是先对a 执行+1操作,再将a的值赋值给b。因此最后a、b的值都是11
    int a = 10;
    int b = a++;
    a++ 的意思是先将a 的值拷贝出来一份,然后对a执行+1操作,于是a变成了11,但是拷贝出来的值还是10,a++运算完毕后,再将拷贝出来的值10赋值给了b,所以最后变量b的值是10,变量a   的值是11。
    同样对于 *(p++)和*(++p)的区别
     *(p++):先取*P的值,然后再p加1
     *(++p):先p加1,然后再取*p

13、函数声明与定义的区别
    声明:声明存在某个函数。
    定义:定义具体的函数体
    区别:有无函数体

14、数组与指针
    1>指针可以用来访问数组元素,eg:p[i],*(p+i)
    2>指针加1代表访问下一个数组元素,1的具体字节数根据指针类型来判断。

15、数组与函数的使用
    1>当数组作为函数参数使用时,数组元素个数可以省略
    2>当数组地址传递给函数时,数组元素值的更改会影响到外面数组元素值的更改(地址传递)
    3>当使用数组值传递时,数组元素值的更改不会影响到外面数组元素值的更改(值传递)

16、单引号'' 和双引号""区别:
 '' :单引号只能扩住单字节的 字符 (ASCII表中都是单字节)。
 "" :双引号扩住的是 字符串。

17、字符串的定义以及strlen的使用
    定义:字符串以字符数组组成,且字符串的最后一位是\0;
    strlen:用来计算字符串的长度,不包括\0,如果遇到\0则停止计算。

18、printf 函数打印字符串的原理
printf函数中使用name2作为参数, 这个数组名其实就是传递了数组name2的地址, printf("%s",a)这个函数就是从提供的地址 开始输出字符, 一直到\0结束输出. 所以,如果一个字符串不以'\0'结束,那么就会一直打印,直到遇到一个'\0'为止,如果打印 到未被赋值的内存区域,就会打印出乱码。

19、字符串与指针
    利用指针定义的字符串属于常量,不可进行修改。
    利用数组定义的字符串属于变量,可以修改。

20、结构体与函数、指针的关系
    结构体与函数:
          1>如果结构体定义在函数内部,则作用域从定义的那一行开始,到函数结束,类似局部变量。
          2>如果结构体定义在函数外部,则作用域从定义的那一行开始,一直到程序结束。
    结构体与指针的关系:
          有3种方式可以访问结构体变量:
           1>stu.age
           2>(*p).age
           3>p->age

21、预处理指令
     分类:宏定义、条件编译、文件包含
     宏定义:    1>宏定义是值将某些字符串替换成为常量或运算符,减少了程序代码量。
                       2>宏定义分类带参数的宏定义和不带参数的宏定义。
                       3>在定义带参数的宏定义时,一定要将每个变量名用小括号括起来
     条件编译:  1>符合某些条件时,再将此代码段进行编译,而且只编译宏定义的语句。
                        2>只有编译的代码才占用内存,没有进行编译的代码不占用内存。
                        3>有了条件编译,必须加#endif
     文件包含:可以和宏定义相结合,来防止文件重复包含。

22、typedef
      用法:#typedef 类型 别名 ;
      作用:为某个类型定义别名。
      好处:1>可以减少代码量。
                 2>可以减少工作量。      

23、static与extern对函数,全局变量,局部变量的作用
     对函数作用:
           static:说明此函数不能被外部文件访问。
           extern:说明此函数可以被外部文件访问。
     对全部变量作用:
            static:说明此变量不能被外部文件访问
           extern:说明此变量可以被外部文件访问。
     对局部变量作用:
             static:1>会延长变量周期,不会随着函数被毁而此变量消失。
                       2>延长变量作用域。

24、交换a和b两个变量的值
方法1:借助第三变量;
方法2:a=b-a;b=b-a;a=a+b;
方法3:位运算。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值