C语言笔记一

学习C语言已经有一段时间,然而发现越学不知道的东西越多,这是在印象笔记中记得一些东西,现在再回顾一遍顺便补充一些新东西。

一,基础知识

  运算符号  优先级  单目>算术>关系

  从高到低

  {

  括号

  成员      .      解引用      *

  算数运算符  *     /     %     +     -

  关系运算符   >     >     >=     <=     !=     ==

  逻辑运算符     &&     ||(短路径法则:&&前为假,后不判断;||前为真,后不判断)

  赋值运算符     

  }

  注意:

  c语言中,前置++/--,后置++/--都不能做左值

  c++,      前置~~可以做左值,后置不能做左值

  例子:

  判断是否为闰年问题

  (year%4 == 0 && year%100 != 0)||(year%4 == 0 && year%400 == 0 )

二,各种类型与零值比较

  bool类型

  bool flag=true;

  if(flag){ }

  else{}

  float类型

  if(float>=0.0000001&&float<=0.00001)

 

  指针类型

  if(p==NULL)

  if(p!=NULL)

三,关于hello world程序

  #include<stdio.h>

  int main()

  {

    printf("hello world\n");

    return 0;

  }

  从main.cpp->编译器编译(语法检查)->.obj ->链接器链接(与库文件(.lib)链接)->.exe

  详细过程:

  开始    编辑

  1预处理      (-E)

    (不做语法检查)

    1,宏替换

    2,“删除”注释语句(空格替换注释)

    3,复制粘贴头文件(自定义类型,类型重定义,宏,函数声明)

    4,条件编译指令,#if.    #endif.       #ifdef

    5,其他

  2,编译         (-S)

    语法检查,将C语言生成汇编语言代码

    源码—————>中间语言(编译器前段)

     1,词法分析

         2,语法分析

      3,语义分析

    中间语言———>目标文件(编译器后段)

      1,代码生成

    2,目标代码生成

  3,汇编   .o

    汇编语言-->根据当前平台(汇编器)-->机器指令

  4,链接   .exe

    将汇编后的机器指令和编译环境提供的库文件链接合并,生成可执行程序

四,内存分了很多区,主要包括

{

    栈: 1,从高地址向低地址生长

       2,分配效率高

       3,无碎片问题

       使用场景:数据量小(<=1024)

            已知内存占用大小

            访问非常频繁

    堆: 1,从低地址向高地址生长

         2,分配效率低

         3,频繁申请/释放,容易造成内存碎片

       使用场景:数据量大(>=1024)

            处理问题所需空间大小不明确

            访问频率相对较低

            需要对变量生命周期进行手动管理

    代码段

    常量区    :1,静态常量区

           2,全局变量区

            3,数据段

}

养成良好的编程代码风格;

时间: 2024-10-09 20:57:18

C语言笔记一的相关文章

C语言笔记1--类型、运算符与表达式

 C语言笔记1--类型.运算符与表达式 总论: 变量和常量是程序处理的两种基本的数据对象.声明语句说明变量的名字和类型,也可以指定变量的初值.运算符指定将要进行的操作.表达式则把变量与常量组合起来生成新的值.对象的类型决定该对象可取值的集合以及可以对该对象执行的操作. 一.变量与常量的名字 1.名字是由字母.下划线和数字组成的序列,其第一个字符必须为字母:下划线"_"被看做是字母,但一般不要以下划线"_"开头. 2.名字区分字母大小写,变量名使用小写字母.符号常量

C++语言笔记系列之十二——C++的继承

C++的继承 1.继承方式 public(公有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象只能访问基类的public成员. protected(保护继承),private(私有继承) 派生类中的成员可以访问基类的public成员和protected成员,但不能访问基类的private成员. 派生类的对象不能访问基类的任何成员. 2.例子 example 1: #include <iostream.h> clas

C语言笔记

C语言笔记 基础知识 数据类型 序号 类型与描述 1 基本类型: 它们是算术类型,包括:整数类型.浮点类型 2 枚举类型: 也是算术类型,被用来定义只能使用某些整型值的变量,使用时需要程序员先使用eumn关键字来声明定义 3 Void类型: 用于函数,指明函数的返回值或参数.作用于变量会发生编译错误 4 派生类型: 包括:指针类型.数组类型.结构类型.联合体类型.函数类型 补充:1.函数类型是指函数返回值的类型,数组类型与结构类型统称为聚会类型. 2.除了基本类型,其他的类型都是程序员使用相关关

C++语言笔记系列之十六——赋值兼容规则&amp;多继承的二义性

1.赋值兼容规则 (1)派生类对象可以给基类对象赋值,这种情况下派生类对象将从基类继承的成员的值赋值给一个基类对象:但是不允许将一个基类的对象赋值给一个派生类. (2)可以将派生类对象的地址赋给基类指针,使基类指针指向派生类对象,通过基类指针引用成员时只可以引用派生类从基类继承而来的成员,而不允许引用派生类的新成员. (3)引用与指针相同. 2.多继承 (1)一个派生类从两个以上的基类中去继承. (2)说明: class 派生类名:继承方式 基类1, 继承方式 基类2,...... {派生类成员

C++语言笔记系列之十七——虚基类

1.虚基类 考虑这样一种情况:当某个类的部分或者全部直接基类是另一个共同基类派生而来,这些直接基类从上一级基类继承而来的成员就一定拥有相同的名称,这样就会产生二义性问题. 解决办法:当派生类和直接基类产生了二义性问题-->加类的作用域. 当派生类和间接基类产生了二义性问题-->虚基类. 2.虚基类的说明: class 派生类名:virtual 访问权限 基类名 {派生类定义}; 注意:在定义派生类时将需要继承的基类进行虚化声明,虚基类的说明在派生类的定义中完成. 作用:将基类说明为虚基类之后,

C++语言笔记系列之十三——派生类构造函数的调用

1.派生类构造函数的调用 (1)一个基类的所有数据成员均被派生类继承.创建一个派生类对象时,系统在为派生类对象分配单元时一定要为其基类数据成员分配子空间. (2)一个派生类对象在创建时不仅要调用派生类构造函数,而且要调用基类构造函数. 派生类中的数据成员在派生类中构造. 基类中的数据成员在基类中构造. 原因: A.构造函数不继承. B.派生类的构造函数必须通过调用基类的构造函数完成基类数据成员的初始化. C.若派生类中含有子对象,必须调用子对象的构造函数. 2.派生类的构造函数 派生类名(总参数

C++语言笔记系列之十八——虚函数(1)

1.C++中的多态 (1)多态性:同一个函数的调用可以进行不同的操作,函数重载是实现多态的一种手段. (2)联编:在编译阶段进行联接,即是在编译阶段将一个函数的调用点和函数的定义点联接起来. A.静态联编:在编译阶段就完成的函数联编--函数重载. B.动态联编:在程序的运行阶段由系统自动选择具体的函数--虚函数. 注:C++的多态主要指的就是动态联编. 2.虚函数 (1)虚函数是在函数的定义时将其声明为虚函数即可. (2)说明:virtual 数据类型 函数名(参数表) {函数体} A.目的:当

C++语言笔记系列之十四——继承后的访问权限

1.析构函数不继承:派生类对象在析构时,基类析构函数的调用顺序与构造函数相反. 注:派生类对象建立时要调用基类构造函数,派生类对象删除时要调用基类析构,顺序与构造函数严格相反. 2.例子 example 1 #include <iostream.h> #include <math.h> class Point { public: Point(double a, double b, doule c) { x = a; y = b; z = c; } double Getx() {re

C++语言笔记系列之十五——派生类、基类、子对象的构造和析构函数调用关系

例子 example 1 注:若一个基类同时派生出两个派生类,即两个派生类从同一个基类继承,那么系统将为每一个简历副本,每个派生类独立地使用自己的基类副本(比如基类中有属于自己类的静态变量等). #include <iostream.h> class Person { public: person() {cout<<"Construction of person."<<endl;} ~person() {cout<<"Destr

C++语言笔记系列之十——静态成员

1.静态成员 (1)由关键字static修饰 静态变量定义语句在编译阶段就执行,运行过程中不再执行. (2)分类:静态数据成员.静态成员函数. (3)静态成员时类的所有对象共享的成员,而不是某一个对象的成员. 2.静态成员的使用 (1)在定义说明前加上static关键字.例如: static int x: (2)静态数据成员必须进行初始化,并且初始化必须在类外完成. (3)静态数据成员的初始化 数据类型 类名::静态数据成员名 = 值://注意这里没有static出现 (4)绝对不能使用对象名来