您的位置:首页 > 编程语言

代码规则,自己总结

2017-10-08 23:13 92 查看
一般采用多文件编程

.h文件与.cpp文件分开

.h - 头文件,主要存放结构体的定义,函数的声明等等

 

语句一般使用在函数中,

具体操作实现

 

结构体变量名.成员名

“.”是“成员运算符”(分量运算符)。

 

::是运算符中等级最高的,它分为三种:全局作用域符,类作用域符,命名空间作用域符。他们都是左关联(left-associativity)。他们的作用都是为了更明确的调用自己的对象或者函数。

  

运算符:

逗号运算符是指在C语言中,多个表达式可以用逗号分开,其中用逗号分开的表达式的值分别结算,但整个表达式的值是最后一个表达式的值。

关键字

缺省,即系统默认状态,意思与“默认”相同。

auto:缺省状态下默认所有变量都是auto

register:寄存器变量,尽可能的将变量存放在寄存器中,所以不能通过取’&’来获取变量地址。

Const:生命只读变量(修饰原则是距离谁近修饰谁)。

Extern:进行外部链接指令。全局变量或函数在缺省情况下的链接属性是extern,告诉编译器变量或者函数是在别的文件中定义的。

如果一个全局变量与一个局部变量名字相同,则在局部变量所咋的代码块内优先使用巨变变量,但是如果给这个局部变量加上extern,则使用全局变量。

Static:当作用于所有代码块之外时,可用于改变函数或全局变量的链接属性,使其只能进行内部链接,在本文件中可用。

当作用于代码块之内的变量声明时,1.改变其存储类型,使其存储到静态区(bss)。2.改变生命周期,使其一直存活到程序结束。3.不改变作用域。4.如果变量没有初始化,则默认初始化为0。

Typedef:给数据类型取别名,还有其他用处

Volatile:告诉编译器到内存中取值,保证内存可见性。

 

一般运行规则:

1.      隐式类型转换(整型提升)字符或短整形在使用前先被转换成普通整形。

2.      算数转换:如果某个操作符的两个操作数属于不同类型,则精度低的向精度高的转换,再进行操作。

3.      宏名与参数之间不能有间隔。

4.      想要在变量所声明的代码块外部改变变量则应进行“传址”。

5.       int *p=后面必须是地址变量! 区别很大。
第一个int *p = a;这是把a给一个指针,一般a是指针或数组,否则可能会造成很大错误。
6.       int *p = &a;这是把a的地址给p,一般a可以是一个整型变量。
7.      int *p[3]和int (*p)[3] 的区别

这两个其实是数组指针和指针数组的区别。我们一个一个来说明:

int *p[3];//定义了一个三维数组,其中的每个元素p[0]、p[1]、p[2]都是指向int变量的指针。

int   (*p)[3];//定义了一个指针,这个指针是指向一个三维数组的。

两者之间的区别和联系可以用一个二维数组来阐述:

int *p[3];//定义p[3]为指针数组

int (*q)[3];//定义q为数组指针

int a[4][3];//定义一个二维数组

p[0]=&a[0][0];//可以取a[4][3]中任意元素的地址给p[3]中的元素赋值

q=a[1];//a[1]其实是一个三维数组,其元素包括a[1][0],a[1][1],a[1][2],所以

           //a[1]就表示这个数组的首地址,这个地址可以用来给q赋值

 

8.      0.

 

 

 

 

 

函数结构

 

声明:好的习惯是将函数声明(原型)放到一个单独的文件,便于维护和使用

定义:函数定义就是函数体的实现,函数体就是一个代码块。它在函数被调用时执行。

函数定义语法:类型 函数名(形参){函数体}

参数:参数传递:传值和传址,想要在变量所声明的代码块外部改变变量则应进行“传址”。

       可变参数列表:可变参数列表是通过宏实现的,这些宏定义在stdarg.h头文件中。

Main函数

递归:递归函数就是直接或者间接的调用资深的函数。递归必须要有递归终止条件,还要有逼近递归终止条件的条件。当递归越深,效率越低。尾递归可用循环替代。

编译链接:1.预编译;2.编译;3.汇编;4.链接

函数的调用过程—栈帧

 

 

函数的定义
函数的定义是一个完整的函数单元:
1.       包含函数类型、函数名、形参及形参类型、函数体
2.       在程序中,函数的定义只能有一次
3.       函数首部与花括号间不加分号

函数的声明
函数声明只是对编译系统的一个说明:
1.       函数声明是对定义的函数的返回值的类型说明,以通知系统在本函数中所调用的函数是什么类型。
2.       不包含函数体(或形参)
3.       调用几次该函数就应在各个主调函数中做相应声明
4.       函数声明是一个说明语句,必须以分号结束!
 

int add(int x,int y); //函数声明语句

int add(int x,int y)//函数定义

{ int z; z=x+y; return z; }

 

难懂的代码

  int *Pi = const_cast<int*>(&i);

使用const_cast可以返回一个指向非常量的指针(或引用)指向b1,就可以通过该指针(或引用)对它的数据成员任意改变。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: