0118 && 0119 C课基础概念准备(笔记)

目录

一、C语言知识点

二、数据类型和存储类型(变量)

三、pritnf和scanf参数表

四、杂谈

备注


一、C语言知识点

1、计算机内存的分配五大区域(内存:1GB内核态  下面是3GB用户态)
    1.栈:烧杯4KB是会放满的     //分系统栈和函数栈   存储局部变量【eg:main()里的int char[]】

    2.堆:倒扣烧杯空间比栈大得多,由用户自己申请(malloc new),并且释放(free,否则内存泄漏)。所以寿命由用户决定 
     //**栈是局部变量  堆是全局变量   指针可以带出malloc地址,全局变量在所有函数体之外**  
   
    3.静态全局区:
       .bss:未初始化的全局和静态变量(全局、static都默认初始为0)
       .data:已经初始化的全局变量
         /**
            *1、静态变量:static  
            *    1)修饰局部变量:在函数结束时不会被系统回收,只在程序结束时被销毁;
            *                  只初始化一次;
            *   2)修饰全局变量:只对本文件可见
            *
            *2、全局变量:被所有文件可见,声明周期是当程序结束时被销毁(少用全局变量**)
         **/

    4.【文字常量区:字符串常量不可修改(直接初始化时"hello")】    //?堆区
     
    5.代码段       

2、struct、union内存对齐方式    
      //位域:int a : 8(位)   更改a大小占1字节  bit 位
      //数据类型系统定义的  数据结构自己定义的

    1.结构体: 1)以最大的数据类型(不是数据结构char[5],算1B)为单位进行字节对齐
              2)如果是结构体嵌套,就将结构体展开,看最大的数据类型
    2.共用体(联合体):union
              1)至少是最大的变量
              2)内存值必须是所有数据类型的整数倍
    3.枚举:enum DAY
                {
                    MON, TUE, WED=10, THU, FRI, STA=1, SUN  
                    //默认第一个是0 之后1 10 11 12 1 2
                };
            
3、typedef 和 define 区别
    1.typedef int INT               //类型替换: type类型  def替换
      typedef int sig_int;          //嵌入式里系统有符号还是无符号要留心,typedef更清楚
      typedef unsigned int un_int;  //PC和一般系统里都是有符号数char int 

    2.#define INT int*              //单纯代码替换,define陷阱 INT a,b;  结果:int* a,b;

二、数据类型和存储类型(变量)

1)数据类型:

2)存储类型:

1.auto         //默认
2.static       //全局变量用static可以多文件同名
3.register     //放在通用寄存器里,但电脑还是放内存     通常在单片机嵌入开发才用,频率快效率高
4.extern       //声明   
//123定义  int i;      4声明  extern int i;

三、pritnf和scanf参数表

1)printf("格式字符",参数表列);   

   2)scanf("格式字符",地址参数);

 

四、杂谈

注意:1)编码速进四个空格,不用tab

      2)实数精度比较(1*3/3 !=1 精度不一样了    
         解决办法:比差值,类似(实数(1*3/3)-1) < 1.23*e0199)

      3)运算符优先级

      4)C程序运行时没有char 和 float:
           int       <=   char
           unsigned
           long
           double    <=   float

      5) scanf("")输入垃圾**  
         解决办法:%*c  getchar(); getch()  getche()  //没有回显,有回显passwd

      6) C语言允许内部调用,不能内部定义

      7) char c   int  a
         c = 'a'  等价于   c = 97  
         a = 'a'  就是赋值 a = 97

***********************************************************************************
1.以后买电脑看CPU选择  (主频  双核四处理器)  
    游戏虚拟3D: 选择Intel  单核性能强
    工作:       选择AND    性价比高  

2.RAM 掉电丢失缓存

3.指针间接寻址,只要取得地址就可以操作除非是内核等受保护的段
  指针按数据类型增加 int* p++  04 08 0c
   
4.数组不对下标进行合法检查,并且数组名a不允许左值,除非初始化整体赋值
  C语言没String用字符数组

5.文件名字母开头不要数字开头,不同语言Java,C++编译不通过,变量也是要英文命名,看的清晰

6.整型不能给指针赋值除0以外,因为类型不一样  0这里是数字(ASCII值0x00000就是NULL)

7.真值位数不够 补到32位  //真值就是不到32位原码的二进制数

8.strlen(a)函数      不包含\0    只计算可显示的字符数    
  sizeof(a)运算符    包含\0      计算字节数,实际占存

9.运算符优先级
  /b 纵向退格    /t 横向退表位      /r 回车不换行  /f 换页 
  
6./xhh  16进制两位        /x41  相当于ASCII码‘A’65  
  /ddd  8进制三位         /101  相当于‘A’65            /0    相当于NULL         
       
10.strlen遇到第一个ASCII码‘\0’ 即数字0  

11余数符号,只看被除数:  因为余数=被除数减去(除数乘以商)
    eg:(-2)%(-3) 被除数为-2 余数为-2

12.英文7位ASCII最高位0  
   中文16位符号扩展1,区别英文

13.结构体第一个变量地址和结构体地址一样,但类型不同
   类似数组首地址a  &a  

14.指针基类型 int* p

15.void就三种:1)函数返回值malloc()通常都强制转换     2)函数参数     3)定义void*指针

16.虚拟内存:内存不用但程序又要加载到内存

17.高级调度(作业调度)接近人
   中级调度(交换调度)虚拟内存将要到物理内存),
   低级调度(进程调度)CPU硬件

18.摩尔定律18月CPU和硬盘速率翻一番,需要高速缓存

备注

cd /home/jsetc

snap 是Qt creater的更新包 build-Qtest1-Desktop-Debug和Qtest1都可以删除

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值