C语言
Simon_CB_Zhao
这个作者很懒,什么都没留下…
展开
-
#pragma pack
原文链接发现这种概念性问题,百度百科也是不错的选择,原文链接:http://baike.baidu.com/view/2317161.htm对齐方式程序编译器对结构的存储的特殊处理确实提高CPU存储变量的速度,但是有时候也会带来一些麻烦,我们可以自己设定变量对齐方式编译器中提供了#pragma pack(n)来设定变量以n字节对齐方式。n字节转载 2016-09-11 13:03:53 · 177 阅读 · 0 评论 -
链表常见面试问题
链表是最基本的数据结构,面试官也常常用链表来考察面试者的基本能力,而且链表相关的操作相对而言比较简单,也适合考察写代码的能力。链表的操作也离不开指针,指针又很容易导致出错。综合多方面的原因,链表题目在面试中占据着很重要的地位。本文对链表相关的面试题做了较为全面的整理,希望能对找工作的同学有所帮助。链表结点声明如下:struct ListNode{ int m_nKey转载 2016-10-26 15:09:58 · 233 阅读 · 0 评论 -
二重指针以及多重指针的分析方法
u-boot中有这么一段代码。/*这里定义了一个新的数据类型init_fnc_t, *这个数据类型是参数为空,返回值为int的函数。 */typedef int (init_fnc_t) (void);/*init_sequence是一个指针数组,指向的是init_fnc_t类型的函数*/init_fnc_t *init_sequence[] = {原创 2016-09-28 22:59:11 · 1781 阅读 · 0 评论 -
C语言支持的两种函数指针的调用方法
C语言调用函数指针的方式:有两种:void test(int);main(){void (*fp)(int);fp=test;(*fp)(9);fp(9);return 0;}void test(int a){printf( "%d\n", a );}这两种形式是等价的,都是为ANSI C所接受的。转载 2016-09-28 22:44:24 · 1672 阅读 · 1 评论 -
用SI看代码时某个函数只找到被引用但是找不到定义时的解决办法
今天在用sourceinsight看uboot代码的时候发现有的函数找不到 定义,只看到了引用,这个问题很是苦恼,①如果你能确定自己没有因为操作失误,②错误的删除了一些代码, ③并且这个函数在这个项目中的的确确的被引用了,编译链接的时候又没有报错。那么这个函数一定在你项目中是存在的话不多说,我把我今天碰见问题的代码贴出来if (cpu_is_s5pc110()原创 2016-10-21 17:06:10 · 2526 阅读 · 1 评论 -
C语言的内存对齐
在C语言面试和考试中经常会遇到内存字节对齐的问题。今天就来对字节对齐的知识进行小结一下。首先说说为什么要对齐。为了提高效率,计算机从内存中取数据是按照一个固定长度的。以32位机为例,它每次取32个位,也就是4个字节(每字节8个位,计算机基础知识,别说不知道)。字节对齐有什么好处?以int型数据为例,如果它在内存中存放的位置按4字节对齐,也就是说1个int的数据全部落在计算机一次取数的区间内转载 2016-09-05 20:56:42 · 208 阅读 · 0 评论 -
typedef 的理解
/*******************************以下是用typedef定义函数指针的别名带来的好处之一**********************************/typedef int (*fun)(int a,int b)fun Fun1 =(fun)(0x00001122);Fun1(a,b,c); //或者(*Fun1)(a,b,c);原创 2016-08-25 23:42:46 · 356 阅读 · 0 评论 -
const 的深度理解
定义编辑const修饰的数据类型是指常类型,常类型的变量或对象的值是不能被更新的。目的编辑const 推出的初始目的,正是为了取代预编译指令,消除它的缺点,同时继承它的优点。主要作用编辑(1)可以定义const常量,具有不可变性。 例如:const int Max=100; Max++会产生错误; (2)便原创 2016-08-26 08:55:47 · 328 阅读 · 0 评论 -
C语言可变参数
一、基础部分1.1 什么是可变长参数可变长参数:顾名思义,就是函数的参数长度(数量)是可变的。比如 C 语言的 printf 系列的(格式化输入输出等)函数,都是参数可变的。下面是 printf 函数的声明:int printf ( const char * format, ... );可变参数函数声明方式都是类似的。1.2 如何实现C语言可变参数通转载 2016-09-13 21:25:43 · 284 阅读 · 0 评论 -
static关键字
全局变量(外部变量)的说明之前再冠以static 就构成了静态的全局变量。全局变量本身就是静态存储方式, 静态全局变量当然也是静态存储方式。这两者在存储方式上并无不同。这两者的区别虽在于非静态全局变量的作用域是整个源程序, 当一个源程序由多个源文件组成时,非静态的全局变量在各个源文件中都是有效的。 而静态全局变量则限制了其作用域, 即只在定义该变量的源文件内有效, 在同一源程序的其它源文件中不转载 2016-09-11 23:00:44 · 176 阅读 · 0 评论 -
GCC___attribute__关键字和字节对齐
ffmpeg在代码中大量的使用了字节对齐,甚至在有些成员变量中也定义了字节对齐的宏,使得在看代码时,有时很发难。,特整理如下。字节对齐: 为什么要对齐:就是为了提高CPU的访问速度或把gcc默认的对齐方式修改下使内存地址连续。如gcc默认是4字节对齐的,你定义个指针的时候,希望16位对齐,则需要设置。 其实为什么要对齐,认真的看看CPU、编译器、调试器、运行结果就什么都明白了,只是为了在编转载 2016-09-11 13:46:18 · 1555 阅读 · 0 评论 -
类型转换函数 & 转换构造函数
转换构造函数用途:将一个其它类型的数据转换成自定义的类类型。注意:这种构造函数只有一个参数,但要区别于拷贝构造函数(形参是一个自定义类型的引用)例子:#include <iostream>using namespace std;class Complex{ public:// Complex():real(0), imag(0){} ...原创 2017-09-07 22:55:59 · 768 阅读 · 0 评论