| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 765 人关注过本帖
标题:请教C语言中一个奇怪的数组赋值问题
取消只看楼主 加入收藏
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
结帖率:0
收藏
 问题点数:0 回复次数:5 
请教C语言中一个奇怪的数组赋值问题
无意间编写程序的时候写错了但是能编译通过并执行,有点不明白了;
代码如下:

#include "stdio.h"

main()
{
    int i=0;
    int Hello[]={"Hello","The","World!"};
    printf("在窗体上输出字符串数组的元素!\n\n");
    printf("字符串数组的元素是:\n");
    for(i=0;i<3;i++)
        printf("%s ",Hello[i]);
    printf("\n\n");
}

特别是是这句:int Hello[]={"Hello","The","World!"};为什么能执行!

搜索更多相关主题的帖子: 编写程序 include C语言 
2013-01-07 10:31
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 3楼 conan8732
我是在VC++ 6.0的编译器里面通过的 原语句是char *Hello[] 结果错写成上面的了居然没报错 还出了一样的结果
2013-01-07 10:49
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 5楼 a4811
但是我定义的是 int 型的 Hello名的数组 不是 char型的 *Hello指针型数组啊 他怎么能把首地址赋给数组Hello[]中的元素呢?不是要指针型数组才行吗?
2013-01-07 11:05
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 8楼 lz1091914999
哦明白了 和原来想的一样 只不过忘了在C里面的字符的储存形式是以十六进制的形式储存的,所以编译器应该是把指向字符元素的指针(即入口地址)当成数组的元素被赋予到int Hello[]里面,但是既然这样可以赋值为什么还要写成char *Hello[]呢??这又有什么区别呢?

[ 本帖最后由 kknd84913 于 2013-1-7 11:27 编辑 ]
2013-01-07 11:20
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 12楼 hanyangzhou
换成%d肯定不能输出字符串咯 只能输出的是地址,我现在迷惑的是 int Hello[]既然和char *Hello[]的效果一样那么为什么一般都用后者赋值而不是前者呢??这其中除了一些上面讨论的区别外还有什么特别的比如能直接影响结果的区别吗?
2013-01-07 11:43
kknd84913
Rank: 1
等 级:新手上路
帖 子:61
专家分:0
注 册:2012-12-26
收藏
得分:0 
回复 17楼 a4811
哦 知道了 谢谢
2013-01-07 13:29
快速回复:请教C语言中一个奇怪的数组赋值问题
数据加载中...
 
   



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

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