共 8 篇文章 |
|
近段时间,在做一个项目时,发现函数名前都加上static,才想到如果不加static有什么作用呢?1:加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见。2:当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过该函数名来调用该函数,这也是对1的解析与说明。 阅578 转5 评0 公众公开 11-11-25 17:09 |
字符指针、字符数组用法大总结(字符串处理)字符指针变量和字符数组都可以处理字符、字符串,但是两者却有着本质的区别。//错误,c_a是一个指针常量不能直接赋值c_a++;//错误,c_a是一个指针常量。2、字符指针初始化及赋值。//正确,指针变量值为0,字符串长度为0,即字符指针指向一个空字符串。//正确,改变字符指针指向的字符串,即改变字符... 阅2704 转23 评0 公众公开 11-10-20 14:04 |
关键字static、const的作用。const int a;int const * a const;例如,在函数的形参前添加const关键字意味着这个参数在函数体内不会被修改,属于"输入参数"。const在C++语言中则包含了更丰富的含义,而在C语言中仅意味着:"只能读的普通变量",可以称其为"不能改变的变量"(这个说法似乎很拗口,但却最准确的表达... 阅871 转8 评0 公众公开 11-10-10 16:38 |
extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。定义这些变量的方式是:extern cregister volatile unsigned int register;extern cregister volatile unsigned int AMR;它是被设计用来修饰被不同线程访问和修改的变量。)推荐一个定义为volatile的变量是说这变... 阅363 转2 评0 公众公开 11-10-09 16:12 |
int find(int *a);函数声明:int find(int& a); 函数调用:int b = 1; int n = find(b);函数声明:int find(int a); 函数调用:int b = 1; int n = find(b);&在用于计算时就是取变量地址,如int* a = &b,就是将整型变量b的地址取出,赋值给整型指针a,a中的内容就是b的地址,所以a指向b。在C/C++中,每个变量都有其相应的地址,通... 阅456 转2 评0 公众公开 11-07-15 11:43 |
指针数组和数组指针数组中每个元素都具有相同的数据类型,数组元素的类型就是数组的基类型。如果一个数组中的每个元素均为指针类型,即由指针变量构成的数组,这种数组称之为指针数组,它是指针的集合。指针数组说明的形式为: 类型 * 数组名[常量表达式] 例如: int * pa[5]; 表示定义一个由5个指针变量构成的指针数组,数组中的每个数组元素-... 阅101 转1 评0 公众公开 11-03-24 16:16 |
这里有三点很重要:1.每个成员分别按自己的方式对齐,并能最小化长度2.复杂类型(如结构)的默认对齐方式是它最长的成员的对齐方式,这样在成员是复杂类型时,可以最小化长度3.对齐后的长度必须是成员中最大的对齐参数的整数倍,这样在处理数组时可以保证每一项都边界对齐。结构体的成员变量要对齐排放,结构体本身也要根据自身的有效对齐值圆整(就... 阅461 转4 评0 公众公开 11-03-20 21:45 |
没有用volatile关键字声明的变量i在被访问的时候可能直接从cpu的寄存器中取值(因为之前i被访问过,也就是说之前就从内存中取出i的值保存到某个寄存器中),之所以直接从寄存器中取值,而不去内存中取值,是因为编译器优化代码的结果(访问cpu寄存器比访问ram快的多)。使用该关键字的例子如下:int volatile nVint; 当要求使用volatile 声... 阅11752 转36 评0 公众公开 11-03-11 16:54 |