- 博客(9)
- 收藏
- 关注
原创 野指针 空指针
野指针:不是NULL指针,是指向被释放的 或者访问受限的垃圾内存的指针。指针变量没有被初始化或者指针 p没被free或者delete之后没有被设置为NULL,让人误认为p是个合法的指针,此外指针操作超越了变量的作用范 围(比如不要返回指向栈内存的指针或引用, 因为栈内存在函数结束时会被释放)时也会出现野指针,所以在使用指针时首先不要忘了重要的if语句:if(NUL
2017-12-06 18:04:36 199
原创 数组的维数
作为参数或者在二维数组的声明时,往往可以省略第一维,但是不可以省略第二维,或者是更高的维数。这是由于编译器的原理所限制的。 &a[i][j]=&a[0][0]+i*sizeof(int)*n +sizeof(int );//此时n为二维的维数 由此可以看出在定义二维数组或更高维数组时,对其进行初始化可以省略第一维参数,编译器会根据你的初始化语句自动决定第一维度,其后的维数
2017-12-06 17:48:41 3060
原创 printf的返回值
#include#include[1]int main { printf(printf "%d" , printf(" %d " "43") )); return 0;} 编译后输出结果为 4321 printf返回值输出的是长度。当输出为43时,长度为2;接着输出为2,长度为1.
2017-11-01 20:04:16 1098
原创 预处理 宏定义
(1)预处理是C语言的一部分吗?(2)包含“#”的都是预处理吗?(3)预处理指令后都不需要加“:”吗? 在现学的C语言中预处理指令总共有12种。 #define :宏定义 #undef: 撤销已定义的宏名
2017-10-23 16:22:35 217
原创 “跳出”的几个兄弟。
首先 goto ,break, return, continue 这几个都有“跳出”之意。(1)goto:在《c语言深度剖析》中对goto关键字的 评价就说,编码的水平与goto 语句使用成反比。总之少用就行了,,,哈哈!(2)break:break关键字很重要,表示终止本层循环。当只有一层循环时,代码执行到break时,循环便终止。(3)continue:continue表示终止本次
2017-10-14 20:15:44 136
原创 define typedef const
定义const只读变量,具有不可变性(在c中后是常变量,在c++中后则是常量)。define是在编译前的预处理阶段的宏定义,只是单纯的宏定义。const 和#define 的区别: (1) 编译器处理方式不同 define宏是在预处理阶段展开。 const常量是编译运行阶段使用。 (2) 类型和安全检查不同 define宏没有类型,不做任何类型检查
2017-10-14 19:54:14 166
转载 内联函数inline ,宏与函数的区别
inline函数 ( 在函数声明或定义中函数返回类型前加上关键字inline即把min()指定为内联函数。) 内联函数的编程风格(摘录自高质量的c++/c编程指南) 关键字inline 必须与函数定义体放在一起才能使函数成为内联,仅将inline 放在函数声明前面不起任何作用。如下风格的函数Foo 不能成为内联函数:inline void Foo(int x, int y
2017-10-14 18:22:54 277
原创 sizeof 的简谈
sizeof 不是函数,而是被当作关键字使用。举例:int i=0;1. sizeof (int) 2.sizeof (i) 3.sizeof i 4 4 4函数后必须要有一个();1. 2. 能编译通过,同时3.也能编译通过且结果为4,那也就证明了它并不是一
2017-09-24 18:55:02 222
原创 一些寄存器的“小奥秘”
一般开始接触“寄存器”(REGISTER)这个名词,都是在汇编。寄存器大致可分为一般寄存器;索引寄存器;堆叠,基底寄存器。 一般寄存器可分为:EAX (accumulator) 累积暂存器——它是很多加法,乘法指令的缺省寄存器 EBX (base) 基底暂存器——在内存寻址时暂放基
2017-09-23 11:54:44 214
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人