【C语言复习】DAY1 初识C语言

已经学习两天了,把前两天的内容难点总结一下,巩固知识

1.头文件<stdio.h>的含义

        standard input and output 标准输入输出

2.局部变量和全局变量

        作用域:局部变量变量所在的局部范围起作用,全局变量时整个工程文件

        生命周期:局部变量在进入该作用域 生命周期开始 ,出作用域生命周期结束

        ,全局变量生命周期是整个程序运行时的生命周期。

3.常属性修饰const

        const修饰的常变量不可修改,如const int a=5; a= 6;会报错

4.枚举常量 enum

        枚举就是一一列举的意思

        enum SEX

        {

                MALE,

                FAMALE

        };

注意 枚举常量 是不可修改的!但是枚举定义的变量可以修改。 如:enum Sex sex=MALE;  sex=FEMALE;

5.字符串

        char arr1[]="abc";

        char arr2[]={'a','b','c'};

         printf("%s\n",arr1)

         printf("%s\n",arr2)

        此时打印arr2 会出现一大串随机字符才结束打印,原因时arr1 字符串打印“abc”  真实情况时

        'a','b','c'\0  会默认放\0 来表示时 字符串 的结束,而arr2 打印字符串的时候,printf会想寻找\0,直到遇到\0才会结束

6.字符串长度

        char arr1[] = "abc";
        char arr2[] = { 'a','b','c' };
        printf("%d\n", strlen(arr1));
        printf("%d\n", strlen(arr2));
        char arr3[] = { 'a','b','c','\0'};
        printf("%d\n", strlen(arr3));

        打印arr2输出是随机值,是因为 arr2数组后面没有\0 一直会找下去直到找到\0。

7.转义字符

        6.1//转变原意

        ??+任意字符  会被解析完三字母词,当你想打印一连串??????时 ,为了不被编译位三字母词         需要加入\?来实现 ?的打印

        \n 换行符     \t 水平制表符      \\ 防止后面的\被解析为转义字符

        6.2转义字符面试题

                printf(“%d\n”,strlen("c:\text\32\test.c"))

               请问输出值 

                答案:13

                原因:\t 被认为转义字符 算一位长度,\ddd(ddd 代表1-3个 八进制数)

                            其中的\32 就被转换成了 十进制ASCII码对应的字符 ,所以被算作一位

8.三目操作符

       (表达式?a:b)如果表达式是真 ,则返回a,否则返回b,

9.原码反码补码

        原码:最高位存放符号位,其他位存放该二进制的绝对值。

        反码:正数的反码就是原码,不变。负数的原码 除去符号位,其他按位取反

        补码:正数的补码 就是原码,不变。负数的补码等于反码+1。

        原码简单易懂,但是负数参与加减运算时,会出现莫名错误。

10.常见关键字(我不常见的关键字)

        register 

                *register int a =0;只是建议a定义为寄存器变量 ,建议!

        typedef 类型重定义

                typedef unsigned int u_int;

        static 

                10.1 static修饰局部变量

                        局部变量生命周期变长,变成整个程序的生命周期

                 10.2 static修饰全局变量

                        全局变量此时只能在 自己的源文件使用,其他文件不可调用,即使extern也不行

                  10.3static修饰函数

                        改变了函数的链接属性,从外部连接 改变到 内部链接,即是能在本文件调用。

11.指针

        11.1指针就是门牌号(地址),指针变量 存放的是 内存地址。

        11.2如何产生地址

                32位/64位电脑 分别由32跟/64跟地址线,每根地址线都有0/1之分,32根地址线就有了2

        的32次方个编号,每个编号 都会被分配给 一个个内存空间,每个内存空间 存储量是 一个字

        节即8bit.

                32位的电脑的一个指针变量  因为要存放32bit的地址,所以指针变量的大小就是4个字节

        64位则是8个字节;

        11.3 指针,解引用 ,取地址

                 &a;   // 代表取a的地址

                int *p= &a; //整型类的指针 ,将a的地址 存放到指针变量中

                *p =1;//解引用操作 ,即通过指针变量p 来找到a的内存编号 来直接改写

12.结构体//stm32标准库 初始化结构体 就是这么来的

        struct BOOK

{        

        char name[20];

         short price;

};

struct BOOK b1={"嵌入式入门",66}

printf("书名:%s\n", b1.name);
printf("价格:%d元\n", b1.price);

                  

        

        

                        

        

        

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值