博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
c语言一个字符变量存储多个字符
阅读量:4166 次
发布时间:2019-05-26

本文共 743 字,大约阅读时间需要 2 分钟。

#include
int main() { char s; char a = 'a'; scanf("%s",&s); printf("input word is:%s, %c\n",&s, a); return 0;}

输入123 , 结果如下:

发现a 的值居然打印为2了!


如果把上面代码中的printf("%s,"); 改为 printf("%c,");

输入nsb,发现char s 的打印异常 , a 仍为 输入的第二个字符 而不是' a '


当然,如果scanf(“%c”)时当然不会出现这些问题,这里只是讨论用scanf(“%s”)输入char数据的情况

在以上的例子中,

先定义了一个char s;  // sizeof(char)== 1

又定义了一个char a = ' a '; // a的内存地址紧挨着 s  ,如下

当然,打印地址应该用printf(“%p”),不过意思都一样啦,内存地址都是差一位的


#include
int main() { char s; printf("%d\n",&s); char a = 'a'; // 只要加上这行printf()语句,输出就又正常了 printf("%d\n",&a); scanf("%s",&s); printf("input word is:%s, %c\n",&s, a); return 0;}

真是让人奇怪哈?我觉得也是编译器的原因,资料如下:

 

www.shengrizhufuyu.cn

转载地址:http://hzgxi.baihongyu.com/

你可能感兴趣的文章
Linux之vim(一)vim简介
查看>>
进程间通信的方式简单解析————管道
查看>>
git学习笔录
查看>>
Activity类中7个与活动生命周期回调有关的方法
查看>>
jwt与token+redis,哪种方案更好用?
查看>>
Comparator接口
查看>>
在二叉树中找到一个节点的后继节点
查看>>
寻找第K大
查看>>
String.trim
查看>>
缓存行 伪共享
查看>>
400 : perceived to be a client error 错误
查看>>
Establishing SSL connection without server's identity verification is not recommended
查看>>
扫描包不存在:pojo类找不到
查看>>
c语言中计算数组长度的方法
查看>>
java 数组定义
查看>>
java中的&和&&的区别
查看>>
Java的位运算符
查看>>
BufferedReader与Scanner的区别
查看>>
java String于常量池中的介绍
查看>>
java Text 错误: 找不到或无法加载主类 Text
查看>>