小白学习日记之字符的赋值

字符的输入可分为单个字符的赋值及字符串的赋值,此处分开就就讨论。
单个字符的赋值
这里只讨论直接赋值,以输入字符A为例,字母A的ASCII码八进制为101,十进制为65,十六进制为41。
令c为单个字符型变量(char c;),将A赋值给c有如下办法:
c=‘A’;
c=’\101’; //八进制,反斜杠+1~3位数字,注意有单引号;
c=65; //十进制,注意此时不用单引号,也不用反斜杠,
c=0101; //八进制;
c=0x41; ;//十六进制;
c=’\x41’; //十六进制,反斜杠+x+两位数字,注意有单引号;

综上,单个字符的输入办法有4种,反斜杠这类在字符串中也可使用,讨论以上办法不是为了用花里胡哨的方法进行输入,而是要明白,单个字符它可以转化为整数,并且在ASCII码中0~9,a~z,A~Z,是连续的,也就是当读取字符c,其值为字符9,可以通过c-'0’这个式子得到整数型9等,当然他还有其他的运用,以后一空想到再一一补上。

字符串的赋值
字符串的赋值可以单个地赋值,也可以整体赋值,此处分开讨论。

整体赋值只能在定义字符的时候进行,不能分开进行。
比如char a[]=“hello!”; 注意,此处用双引号,长度可以不写,如果要写则应该写char a[7]=“hello!”;这是因为除了内容本身占用六个字符外,还需有一个字符储存标识结束的字符’\0’,但此时用strlen(a)查询变量长度,则度还是6。这个在逐个赋值上也一样,如果最终赋值的字符数量为n,则字符串的长度应至少为 n+1。
char a[]="\150\145\154\154\157\041";可以达到和上面同样赋值的效果,转义在字符串中同样有作用。

逐个赋值同单个字符串赋值差不多,此处不过多讨论,需强调的是,字符串的下标从0从开始,整体赋值系统会在末尾自动添加’\0’,标识结尾,单个赋值后,需自己添加末尾结束符。如赋值完hello!后,需在操作a[6]=’\0’;另外a[n]本质是一个指针,并不能识别其范围是否超过了定义,比如定义了字符串的长度为7,但是对a[7],a[8]进行赋值,系统不会报错,在这些地址的内容没有被其他程序改写前甚至可以正常调用,但是其危害是十分明显的,a[7],a[8]有可能被其他程序改写,造成信息的丢失。比如:
char a[7]="hello!";//此时a占有的空间是7个字符,长度为6; a[6]=65; a[7]=65; a[8]='\0'; printf("字符串内容是:--%s\n--字符串长度是:%d\n--字符串a占用的空间是%d个字符\n",a,strlen(a),sizeof(a)/sizeof(char));这些操操作后,printf的结果为字符串内容是:
–hello!AA
–字符串长度是:8
–字符串a占用的空间是7个字符

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值