C
andy572633
这个作者很懒,什么都没留下…
展开
-
C语言内存字节对齐小结
在C语言面试和考试中经常会遇到内存字节对齐的问题。今天就来对字节对齐的知识进行小结一下。首先说说为什么要对齐。为了提高效率,计算机从内存中取数据是按照一个固定长度的。以32位机为例,它每次取32个位,也就是4个字节(每字节8个位,计算机基础知识,别说不知道)。字节对齐有什么好处?以int型数据为例,如果它在内存中存放的位置按4字节对齐,也就是说1个int的数据全部落在计算机一次取数的区间内,那原创 2012-01-21 18:31:43 · 31236 阅读 · 8 评论 -
分享C语言中的unsigned类型的一道题目
下面的代码有什么问题?unsigned i ;for (i=9;i>=0;i--){printf("%u\n",i);} 答案:死循环整形数据在计算机中是用补码表表示的当i=0时,补码为0x00000000i--后,补码为:0xffffffff因为i为无符号数,所以i>=0成立(此时计算机认为i是个很大的正整数),循环继续原创 2012-02-01 20:29:41 · 1316 阅读 · 0 评论 -
C语言数组名a和&a小结
int a[5] = {1,2,3,4,5};数组和指针是C语言的精髓也是它的难点。特别是对于数组名a以及&a,很多同学一直都搞不清楚。今天就说说我自己的理解,希望能对大家有所帮助。a表示的是a[0]的起始地址,而&a表示的整个数组的起始地址。只是恰好他们表示的地址相等,但并不能说他们两个就完全相等。就像浙江省的省政府在杭州,而杭州市的市政府也在杭州,但不能说浙江省政府就等于杭州市政府。原创 2012-02-09 22:07:30 · 1465 阅读 · 0 评论 -
关于内存大小端的定义与检查方法
指低位的存储位置,低位存高地址为大端,低位存低地址为小端,可通过以下程序验证(利用union的特性)int checkSystem( ){ union check { int i; char ch; } c; c.i = 1; return (c.ch ==1);}如果当前系统为大端模式这个函数返原创 2012-02-25 09:54:03 · 899 阅读 · 0 评论 -
undefined reference to 'pthread_create'问题解决
由于是Linux新手,所以现在才开始接触线程编程,照着GUN/Linux编程指南中的一个例子输入编译,结果出现如下错误:undefined reference to 'pthread_create'undefined reference to 'pthread_join'问题原因: pthread 库不是 Linux 系统默认的库,连接时需要使用静态库 libpthrea原创 2012-02-25 09:47:32 · 856 阅读 · 0 评论 -
C语言中的无符号扩展和带符号扩展
C语言中,当不同类型的数据进行运算的时候,就会发生强制或隐式类型转换,通常是低精度的数据类型扩展到高精度的。有些时候,低精度的位数比较少,扩展到高精度的时候,就要在前面补充一些位。那么这些位是补0还是补1呢?这就涉及到无符号扩展和带符号扩展。扩展的原则是:1.有符号的数据类型,在向高精度扩展时,总是带符号扩展 2.无符号的数据类型,在向高精度扩展时,总是无符号扩展怎么理解呢?首先原创 2012-03-05 23:05:25 · 5479 阅读 · 1 评论