麻烦哪位大神和我说说下面给我的警告是啥意思?为啥我感觉用着也没问题呀?

Dream1018 lin 2021-04-02 07:51:52
...全文
389 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
二进制脑袋 2021-04-03
  • 打赏
  • 举报
回复
声明了全局静态数组a[],却没有给出大小,程序不出错是你的运气。如果你声明了其它静态变量,由于a[]没有给出大小,在scanf向a放入输入字符串的时候,会覆盖其它静态变量,程序必然出错!概念要清晰!
Dream1018 lin 2021-04-03
  • 打赏
  • 举报
回复
引用 7 楼 forever74 的回复:
1、作为一维数组名,a和&a表示的地址值相同是必然的,不是偶然。但更重要的是它们还有区别,位于白马背上的不一定都是猴子的师傅。 2、字符串,是特定的语法概念,其实体结构,开始于某个首地址,结束于码值为0的字符。用首地址表示,同时其语法意义也多半是其首地址。可以放进字符数组这个容器,也可以不放。 字符数组是每个元素占用1字节的数组,可以用来存放字符串也可以用来存放不是字符串的东西。 3、见上,%s引用首地址,打印字符串。碰巧该字符串放在字符数组里,看着好像打印字符数组了。
谢谢
Dream1018 lin 2021-04-03
  • 打赏
  • 举报
回复
引用 6 楼 qzjhjxj 的回复:
在CSDN论坛里搜下"字符数组和字符串的区别和联系". scanf()函数用法,参考下:https://blog.csdn.net/luxuejuncarl/article/details/1576513
谢谢
forever74 2021-04-02
  • 打赏
  • 举报
回复
1、作为一维数组名,a和&a表示的地址值相同是必然的,不是偶然。但更重要的是它们还有区别,位于白马背上的不一定都是猴子的师傅。 2、字符串,是特定的语法概念,其实体结构,开始于某个首地址,结束于码值为0的字符。用首地址表示,同时其语法意义也多半是其首地址。可以放进字符数组这个容器,也可以不放。 字符数组是每个元素占用1字节的数组,可以用来存放字符串也可以用来存放不是字符串的东西。 3、见上,%s引用首地址,打印字符串。碰巧该字符串放在字符数组里,看着好像打印字符数组了。
qzjhjxj 2021-04-02
  • 打赏
  • 举报
回复
在CSDN论坛里搜下"字符数组和字符串的区别和联系". scanf()函数用法,参考下:https://blog.csdn.net/luxuejuncarl/article/details/1576513
Dream1018 lin 2021-04-02
  • 打赏
  • 举报
回复
引用 2 楼 forever74的回复:
其一,scanf里面第二个参数应该是a,而不是&a。没表现出问题是因为它俩的“值”都是同样的地址值。但是它们的类型不同,乱用是一个很粗浅的错误。 其二,a没有给出长度,未初始化的数组又不给出长度,这应该是个error才对。
兄台我还有三个问题: 1、&a 和a地址值相同是不是一种偶然? 2、字符数组和字符串有何区别? 3、以%s格式地址是字符数组首地址,居然能打印出整个字符数组,这是神马情况?
Dream1018 lin 2021-04-02
  • 打赏
  • 举报
回复
引用 1 楼 qzjhjxj的回复:
给数组a指定一个长度,如char a[32].
必须要指定长度吗
forever74 2021-04-02
  • 打赏
  • 举报
回复
这两个问题都不能忽视,不要因为没看出后果就不以为然。 此处省略因措辞严厉而引起读者不适的一百五十字。
forever74 2021-04-02
  • 打赏
  • 举报
回复
其一,scanf里面第二个参数应该是a,而不是&a。没表现出问题是因为它俩的“值”都是同样的地址值。但是它们的类型不同,乱用是一个很粗浅的错误。 其二,a没有给出长度,未初始化的数组又不给出长度,这应该是个error才对。
qzjhjxj 2021-04-02
  • 打赏
  • 举报
回复
给数组a指定一个长度,如char a[32].

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧