标题:为什么&a可以储存字符串,求大神解答?
只看楼主
c迷
Rank: 1
等 级:新手上路
帖 子:2
专家分:1
注 册:2023-4-1
结帖率:0
已结贴  问题点数:30 回复次数:3 
为什么&a可以储存字符串,求大神解答?
#include <stdio.h>
int main()
{
    char a;
    scanf("%s",&a");
    printf("你输入的字符串是:%s",&a");

    return 0;
}
字符变量为什么可以存储字符串呢
把printf中的&去了,就会出错。
搜索更多相关主题的帖子: 储存 return printf 字符 字符串 
2023-04-01 11:32
追梦人zmrghy
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:399
专家分:190
注 册:2021-4-9
得分:15 
&是取地址符。。。
记录的是,变量在内存中的位置,
置于变量,存放什么。要看变量的类型。。。。。
幼儿园(学前班)的知识点。。。。


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

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

2023-04-01 11:53
pvm2000
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:24
帖 子:159
专家分:256
注 册:2022-12-22
得分:15 
printf("你输入的字符串是:%s",&a");   和 下一行中 &a“  应为 &a
字符变量只能放一个字符,应该用%c输出。如果你用 %s 输出,则从该地址(&a) 输出字符串,遇 '\0' 才停止。
建议先多看看书
2023-04-04 00:18



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-511763-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.011791 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved