Aftet Reading My Thinking Abotu C Programming FAQs 495

本文深入探讨了C语言编程中的关键概念和技术,包括类型定义、指针与数组的使用、命名空间管理、布尔表达式解析、输入输出操作以及获取当前时间的方法。详细解答了关于C语言中typedef与#define的区别、指针与结构体的应用、如何避免使用特定命名规则、自增运算符的优先级、数组与指针的等价性、布尔表达式的实际应用以及解决scanf、getchar和gets问题的替代方法。
摘要由CSDN通过智能技术生成

Aftet Reading My Thinking Abotu C Programming FAQs 495 

 

1.typedef 与 #define 有什么区别?

最好使用typedef 因为它可以正确处理指针类型,当然#define也有#ifdef的优点,同时typedef也有遵守作用域规则的特点(即可在函数或块内声明)

 

2.typedef 声明一个结构指向自己的指针

typedef struct node{

char *item;

struct node *next;

}NODEPER;

 

3.关于命名空间的管理(即函数命名)

综合规则和头文件里的“未来使用”的考虑

  不要使用任何以下划线开始的名称

  

4.*p++

由于自增运算++--操作符优先级比前缀一元操作符优先级要高,因此*p++*(p++)等价。他自增p并返回p自增前所指向的值。

 

5.指针与数组等价

一旦提到这个数组,数组就退化成指针了。所以当作为函数形参时数组和指针的声明可以互换,这是一种方便的做法,实际上数组由于马上退化为指针,他从来就没有被传入到函数,函数接收到的是指针。

指针可以模拟数组,指针算术与数组下标运算等价,他俩并不完全一样。

 

6.布尔表达式

C里面没有正式的布尔类型,它将0解释为False,任何非零值解释为真,而在逻辑表达式中常常返回1为真。(例如while1)为常用死循环)

 

7.c=getchar()!=EOF

EOF在头文件stdio.h中定义为-1,但这并不是指你要得输入-1才会结束。因为当你输入-1时是两个字符,而getchar一次只读一个字符。

 

8.在使用scanfgetchar或是gets时出现问题

这实际上就是输入缓冲区的问题,由于scanf对换行符的特殊处理,要么就完全使用scanf,要么就干脆不用它。

 

9.scanfgets有很多问题,如何代替?

可以先用fgets来读出整行,再用scanf或其他办法来解释。

 

10.C语言中获得当前时间?

头文件time.h下,使用timectimelocaltime等函数均可。ctime转换time_t为可打印的字符串。

time_t now;

time(&now);

printf("It's %s",ctime(&now));

 

 


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值