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
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制

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

posted on 2015-09-13 15:35  Stomach_ache  阅读(212)  评论(0编辑  收藏  举报

导航