注册 登录
编程论坛 C语言论坛

为什么&a可以储存字符串,求大神解答?

c迷 发布于 2023-04-01 11:32, 232 次点击
#include <stdio.h>
int main()
{
    char a;
    scanf("%s",&a");
    printf("你输入的字符串是:%s",&a");

    return 0;
}
字符变量为什么可以存储字符串呢
把printf中的&去了,就会出错。
3 回复
#2
追梦人zmrghy2023-04-01 11:53
&是取地址符。。。
记录的是,变量在内存中的位置,
置于变量,存放什么。要看变量的类型。。。。。
幼儿园(学前班)的知识点。。。。


char a;               //内存中,分配一个8位二进制空间(-128~127)数值。
 scanf("%s",&a");     //表示,输入的字符串,存放首地址,是char a的地址。
                      //字符串,是连续若干个8位二进制空间的组合。
                      //因为char a只分配了一个8位二进制空间,存放字符串就想出现内存空间(越界行为)。
                      //内存空间(越界行为),会破坏其它数据,同时存放的字符串,也可能会被其它数据所破坏。。。
                      //无效内存空间,被破坏的数据,打印出现乱码很正常现象。。。。

[此贴子已经被作者于2023-4-1 12:17编辑过]

#3
pvm20002023-04-04 00:18
printf("你输入的字符串是:%s",&a");   和 下一行中 &a“  应为 &a
字符变量只能放一个字符,应该用%c输出。如果你用 %s 输出,则从该地址(&a) 输出字符串,遇 '\0' 才停止。
建议先多看看书
1