你精通C语言吗?–由一次面试的亲身体会想到的…
读研这两年,平时项目都在用C语言在Linux下做,两年下来,也写了不少的代码,再加上我平时的不懈努力,多看书,也算是C语言的基础知识比较扎实了,因此在自己的简历上,就写上了“精通C语言编程”;这个在面试华为、中兴以及华赛的时候,都还好,问的问题都没有被卡壳,但是就在前几天,我去成都面试某互联网公司的时候,就结结实实的被打击了一下:当时面试管GG 看到我简历上写的“精通C语言编程”,就说:你精通C语言编程啊?我当时就一个汗啊!GG又说:那好吧!我给你说个最简单的吧:
struct empty{ }a ; //sizeof(a)
我只记得 在C++里面 空class 是 1;但是 在C语言的标准下,就不太好说了4? 1? 0? ,我一时之间想不到为什么了,这样的东西和编译器有关系?
当时大脑飞速运转,思考很多知识,总结推理…
回答:C++的标准下是1,C语言里面不确定,但是我推测是0或者4,原因:….
面试官GG 笑而不语。
我晓得自己回答的,他肯定不太满意。
然后GG接着问:问什么在C++中是1呢?
汗!这次是真的回答不上来了,由此想到自己还是真的不能堪称“精通C”啊!
回来以后,在VC下试了一下 结果是1,GCC下试了一下是0;
看来这个问题和编译器有关系啊!
再想一下,不免可以有一个比较清楚的认识了:每个结构体,编译器在处理的时候,都要对他进行识别,空的结构体就不能用结构体内部来识别他,就要编译器帮忙,这样的话,VC就产生了一个字节的空间来存储结构体的标识。GCC在处理的过程中节省了空间,但是他是怎么识别的呢?呵呵,回头想一下,其实两个空的结构体是没有用的,识别与否关系不太大!
由这个题目,我还想起来一个知识点:
#define print( n ) printf( “data”#n” = %d\n “, data##n )
int main()
{
int data5=100;
print(5);
return 0;
}
上面这个代码是多少呢?有没有思考过呢?平时做项目的时候有没有用到过呢?
呵呵,如果我告诉你 结果是 :data5=100;
你会不会有些惊讶?
为什么是这样的呢?我们要从#号的功能谈起了
# 本身为指令 没有其他意义,也没有其他效果
# 号必须是该行除了任何空白字符外的第一个字符。预处理指令就是以#号开头的代码行。
# 后是指令关键字,在关键字和#号之间允许存在任意个数的空白字符。
整行语句构成了一条预处理指令,该指令将在编译器进行编译之前对源代码做某些转换。
下面举例说明下:
形式为: #define 标识符 字符串.
其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。 #x中的#是字符串化运算符,作为是把参数x字符串化,即用双引号包围,例如,在这个程序中:
print(4);
参数4经过宏替换并字符串化之后,就成了:
printf(“the no. ” “4″ “,is”);
由于相邻的字符串会自动被连接,所以,它最终相当于:
printf(“the no. 4 ,is”);
由此 我们可以在 gcc 下试一下:
[root@localhost ~]# gcc -E –o test test.c
[root@localhost ~]# cat test
# 1 “test1.c”
# 1 “<built-in>”
# 1 “<command line>”
# 1 “test1.c”int main()
{
int data5=100;
printf( “data ” “5″” = %d\n “, data5 );
return 0;
}
这下就比较清楚了吧!
呵呵,其实C语言几十年不衰,还是有原因的,他有很经典的地方。很值得我们深入的研究它!

呵呵,宏是比较复杂。
我都不敢写精通某种语言的。
ps:
一个宏的有趣问题,不用循环和递归,写出打印1,2,。。。1000的程序。
正在学,太深奥了
深奥 ,深奥
[1]
# 号必须是该行除了任何空白字符外的第一个字符。
——
前面也可以添加注释啊
[2]
一个宏的有趣问题,不用循环和递归,写出打印1,2,。。。1000的程序。
——
用枚举变量?
@wcdj
呵呵,预编译过程,注释省略的吗
不过你的思维 很严密哈,记得陈正冲讲到这个对吧?哈哈
第二个问题,我还在想,你说的是个方法,不过枚举1000个,这写代码也太累了吧?哈哈
@wcdj
@moorekang
我道是 想到一个 可以用递归解决的方法,哈哈,不过,刚刚看到说的不让用递归。。。 (┬_┬)
哈哈,怪我啦!
我去百度了下:
看了以后,恍然大悟:
#include
#define A(x) x;x;x;x;x;x;x;x;x;x;
int main (void)
{
int n = 1;
//下面完成三次宏调用,每次宏调用,实现10个展开函数,正好出现1000次展开(1000个printf(…)),
//感觉还是非常巧妙 –yqshare
A(A(A(printf (“%d “, n++))));
return 0;
}
博大精深的C啊
你好,能否知道你的联系方式? 我现在在linux下使用c语言, 一直碰壁,也没有一个 可以帮我的人
谢谢~!
@phenix
我邮箱,咱们可以共同讨论下:
$echo -n “Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIGx1eXVxaW1haWxib3hAZ21haWwuY29tCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQo=” | base64 -d
博主博客设计的真不错,精品游戏网我的网站,博主也给点建议吧?
精辟!!!
研究一下。
闲暇之余,恍惚之间,一不小心,在看其他东西的时候,发现了这个网中花园。博主是个细心之人,不管是做博客还是其它的。看来以后这是个久留之地了,希望博主能再接再厉。 师弟:fxp
我勒个去,不带这样说的,哥会不好意思滴
师兄v5!!!
欢迎缩小图片。作为一个大型论坛的管理员,我们有很多的用户几乎没有图形的技能或知识。创建了这个网站问问题,如怎样调整图片的用户感到沮丧?我如何使图像变小?我如何缩小头像图片。所以,我们创建了收缩的图片是没有更多的困难比在论坛中张贴和现在任何人都可以调整图像和数码照片的工具。
resize image online
如果你是比较各类纯平电视,你可能会成为一些不同的选择轰炸。虽然有很多争论平板电视监控是最好的,液晶电视正迅速成为领跑者。 LCD使用微小的像素是由液态晶体生产技术。
tv lcd 42
奇妙的
。碰撞修复
Heavy equipment mover
Daewoo heavy equipment
Loader heavy
Heavy equipment training canada
Enclosed trailers used
John deere 450h
Komatsu pc20-7
Construction equipment leasing
Caterpillar d5b for sale
Power tools rental
Used bulldozers for sale
Rental excavator
Concrete equipment used
Heavy equipment international shipping
Noram motor grader
Heavy machinery sales
Equipment building
National equipment rental
Cranes for sale
Rent construction equipment
Used commercial trucks for sale
Heavy equipment operator training california
Jobs in heavy equipment
Heavy equipment operator jobs in
Forklift operator certification
Komatsu wa50-3
Komatsu parts
Mechanic job description
Used heavy equipment ontario
Oregon heavy equipment
Backhoe loaders
Wheel loaders used
Heavy equipment edmonton
John deere 310 sg
John deere heavy machinery
Heavy equipment traders
Excavators videos
School heavy equipment
Used bulldozers for sale
Deere 310g
Loader with backhoe
Used equipment farm
Used tractors for sale
Move heavy equipment
Caterpillar 299c for sale
Caterpillar d6r for sale
Backhoe for tractor
Backhoe for sale
Telescopic fork truck
Heavy lift cranes
虽然保持年轻是每个人的想法,现实的情况是年纪越来越大终有一天会发生,与它一起就可以得出不同的健康问题。为了确保你oрtimal以及即使在退休后,现在它是必不可少的氨基酸和降低胆固醇的维生素。为什么我应该得到氨基酸维生素,氨基酸,是对个人在每一个时代grouр至关重要。杨рeoрle一般需要helр他们的氨基酸,维生素剧烈活动,如跑步,骑自行车等,因为这些协助细胞的生长。这些活跃的细胞可能suррort个人有较强的免疫系统的建设也参与。一个更强的防御手段得病的机会较少。个人谁的密集的训练,健美严重,和阻力训练,此外需要氨基酸helр他们负载uр他们希望simрly suррort因为氨基酸能促进更快, suрerior建设肌肉的肌肉质量。这些也helр更好的肌肉和身体的恢复,这是至关重要的,参与这些活动。无需在训练和其他活动之间的aррroрriate肌肉质量恢复, рerson可以exрerience胸闷和疼痛,可能感觉完全疲惫的例行。氨基酸也是有价值的个人在炼油рrotein存储。你的身体看作是一个大的标准的银行,可以有一个低迷的运行时间,一旦你成熟。
amino acid side chain chart
上述SelectChina.com ,并寻找中国五金工具制造商/中国五金工具产品的更多信息。 u003c! – INFOLINKS_OFF – u003e
heavy equipment parts inc
used truck trailers
komatsu pc 35 mr
safety heavy equipment
heavy equipment training courses
Demag cc 2400
Heavy equipment training school
Komatsu wa250-1
Excavator sale
Hitachi zw 310
Heavy trucks for sale
Nccco certification
Salvage heavy trucks
Sale machinery
Caterpillar 299c for sale
这种困境不一定限于启动企业老板。成立的建筑企业都发现,他们的银行或财务公司正在下降,使所有重要的贷款。原因是什么呢?最近的住宅次级贷款的混乱影响已迁移到商界。银行收紧对小额贷款,他们用带有规律性的。
moving heavy equipment
heavy equipment driver
bulldozer operator jobs
heavy equipment operator jobs in
rental equipment rates
Mini excavator
Heavy equipment backhoe
Heavy equipment operator positions
Heavy equipment operator certification
Crane companies
Construction equipment lease
980h caterpillar
Used heavy equipment values
Jcb equipment
Backhoe tractor
Caterpillar d5g xl
Loader for tractor
Machinery trader
D7r for sale
Front end loader hydraulics
Concrete equipment rental
Heavy equipment towing
Used asphalt pavers
Crane manufacturers
Heavy equipment operator jobs in illinois
Heavy lift equipment
Semi trucks
Cheap heavy equipment
Komatsu pc20-7
Heavy equipment training schools
Yellow cat heavy equipment
Hitachi zx130w
Truck crane
Caterpillar 308c cr
Caterpillar equipment
Trailers in arizona
Heavy equipment services
Sure trac trailers for sale
Heavy equipment colleges
Jobs heavy equipment operator
Equipment building
Heavy equipment courses
Caterpillar 247b
Heavy equipment operating training
Heavy machinery trader
Construction auction
Equipment trader canada
Heavy equipment grants
Heavy equipment accident pictures
Employment heavy equipment
Terramite for sale
Rc construction equipment
Used heavy equipments
Kramer allrad 620
Heavy duty equipment operator
三同号:三个28.5英尺( 8.7米)拖车最大重量可达129000磅。
Tool rental
Tire loader
Selling heavy equipment
Caterpillar 247b
Equipment heavy
Used heavy equipment attachments
Road construction machinery
Used trailers car
Used equipment trailers
Used truck
heavy equipment used
heavy truck for sale
construction equipment parts
cat equipment rental
truck and heavy equipment
讲穿购买手机还款内最优秀的的建立,甚至时下消费者极为之中断言。有很多品牌,从喜欢一个整体模型套件。然后,你需要能力的考虑,也电池。在目的有义务一个最适合你的一种特殊的,也适合你自己的风格的个人品味。时尚卓越三个最热的聘用肘手机将黑莓珠,你的苹果iPhone ,幸运的是摩托罗拉九十年代刀片。所有三个或更多这样的奇特的候选人,每个人都有其敏锐自己的耐用性,高度的薄弱点。我们注定看看这些每个人分开,以便您可以自行决定还款等你假装将是最好的信念的勇气。
Used cellphones for sale
在购买手机最好穿的会谈是建立要平衡再次狠狠的断言之中消费者。有很多品牌喜欢的车型的分组。然后,你需要能力,考虑到步行,也电池。你到底需要选择一个对您的生产,也期的自己的个人风格满足。时尚最好的三个最热的聘用可用手机将你的苹果iPhone ,黑莓珠,舒适的摩托罗拉九十年代刀片。所有三个或更多这样的奇特的候选人,每个人都有他们完全是自己的耐久性articulately unsubstantial点。我们注定看看在每一个这些分开,以便您可以决定自己的看法,如您信任是最好的,在处置。
Used cellphones for sale
不懂啊