C语言基础

因为保研机试,所以把C语言看了一下,本来自我感觉良好,真的发现几个很基础对问题都不会。

1.

typedef struct node {
    int x, y;
} Node, *pNode;

这里给struct node定义了别名 Node, 之前我都以为 pNode 是 定义了一个 Node 类型对指针。。。现在才知道自己傻。

实际上应该是给 struct node * 定义了一个别名,叫 pNode。

 

2.

关于字符数组:

char s[] = {'a', 'b', 'c', 'd'};

这里定义了一个字符数组 s, 并且进行了初始化。但是 strlen (s) 的指是 5(gcc和VS运行结果可能不同!), sizeof (s) 的值是 5;

但是如果这样定义:

char s[] = "abcde";

这里strlen (s) 的值应该是也是5, sizeof(s) 的值是6;

sizeof的结果不同是因为前面对定义, 编译器并不要求在最后加一个 '\0', 所以组对它应用strlen的时候,不同编译器可能结果不同。

而对于后者对定义方式,编译器是要求组结尾加一个 '\0'。

 

3.

转义字符

转义字符意义ASCII码值(十进制)
\a响铃(BEL)007
\b退格(BS) ,将当前位置移到前一列008
\f换页(FF),将当前位置移到下页开头012
\n换行(LF) ,将当前位置移到下一行开头010
\r回车(CR) ,将当前位置移到本行开头013
\t水平制表(HT) (跳到下一个TAB位置)009
\v垂直制表(VT)011
\\代表一个反斜线字符''\'092
\'代表一个单引号(撇号)字符039
\"代表一个双引号字符034
\0空字符(NULL)000
\ddd1到3位八进制数所代表的任意字符三位八进制
\xhh1到2位十六进制所代表的任意字符二位十六进制

从表中可以看出,在C语言中有三种转义字符,它们是:一般转义字符、八进制转义字符和十六进制转义字符。

转载于:https://www.cnblogs.com/Stomach-ache/p/4805037.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值