C语言中的格式字符和转义字符,所有指针变量占4个字节

1、格式字符

 

格式说明由“%”和格式字符组成,如%d%f等。它的作用是将输出的数据转换为指定的格式输出。

格式说明总是由“%”字符开始的。

释义格式字符表示
pointer%p以16进制形式输出内存地址

decimalism 十进制

%d 

按十进制整型数据的实际长度输出
long decimalism%ld长整型输出
octonary%o八进制输出
hexadecimal%x以十六进制输出整数,重要!
unsigned decimalism%u输出无符号整型,
char%c输出一个字符
string%s输出一个字符串
float%f输出实数,默认保留小数点后6位
 %mf输出实数,保留小数点后m位
exponent%e指数形式输出
 %g根据大小自动选f或e格式,且不输出无意义的零

注意:

1)一定要掌握 %x(或 %X 或 %#x 或 %#X),因为调试的时候经常要将内存中的二进制代码全部输出,然后用十六进制显示出来。下面写一个程序看看它们四个有什么区别:

# include <stdio.h>
int main(void)
{
    int i = 47;
    printf("%x\n", i);   
    printf("%X\n", i);   
    printf("%#x\n", i);   
    printf("%#X\n", i);   
    return 0;
}
/*
在 VC++ 6.0 中的输出结果:
2f
2F
0x2f
0X2F
*/

从输出结果可以看出:如果是小写的x,输出的字母就是小写的;如果是大写的X,输出的字母就是大写的;如果加一个#,就以标准的十六进制形式输出。

最好是加一个#,否则如果输出的十六进制数正好没有字母的话会误认为是一个十进制数呢!

总之,不加#容易造成误解。但是如果输出 0x2f 或 0x2F,那么人家一看就知道是十六进制。而且%#x%#X中,笔者觉得大写的比较好,因为大写是绝对标准的十六进制写法。

释义16进制说明
小写%x输出的字母就是小写的
大写%X输出的字母就是大写的
#小写%#x以标准的十六进制形式输出
#大写%#X 

2)使用%u输出无符号整型(unsigned),输出无符号整型时也可以用 %d,这时是将无符号转换成有符号数,然后输出。但编程的时候最好不要这么写,因为这样要进行一次转换,使 CPU 多做一次无用功。

2、转义字符

转义字符

意义

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

\?代表一个问号063

\0

空字符(NUL)

000

\ooo

1到3位八进制数所代表的任意字符

三位八进制

\xhh

十六进制所代表的任意字符

十六进制

 

3、不同类型的指针,都是占4个字节

首先,一个变量的地址存放的是该变量第一个字节的编号,比如 整型变量 i 占 4 个字节,但是 i 的地址存放的是整型变量 i 的第一个字节的编号(也就是地址)。那么通过第一个字节的编号怎么找到变量 i 呢,即整型变量占 4 个字节,从第一个字节的位置往下数 8 个字节就是整型变量 i 所在的位置了。

其次,为什么地址变量都占 4 个字节呢?因为内存有 4 G 个编号,为了方便存放编号太大的字节,所以,地址变量的空间就用 4 个字节来表示了。

  • 4
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值