| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1900 人关注过本帖
标题:关于《C专家编程》中数组和指针的一个问题
取消只看楼主 加入收藏
youth7
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-7-21
结帖率:0
收藏
已结贴  问题点数:20 回复次数:4 
关于《C专家编程》中数组和指针的一个问题
《C专家编程》的 第四章中,为了展现指针和数组的不同,作者举了一个例子:在一个文件中声明一个数组,然后在另一个文件中通过指针引用它,然后运行的时候会出现异常的结果。我是这样编写这个例子的程序:
在test.c文件中
char a[3] = {1,2,3};

在main.c文件中
程序代码:
#include<stdio.h> 

int main(void){

 extern char * a;

 printf("%d %d", a, a[0]);

 return 0;
}

在fedora26上用gcc7编译,显示报错说类型冲突:
main.c:4:16: error: conflicting types for ‘a’

我以为是现代的编译器进化了,能够在编译阶段就能识别出类型不匹配的问题。于是又去找了turbo c++ 3来编译,结果还是提示类型不匹配,请问是不是我哪里弄错了呢,要怎么才能重现《C专家编程》中所说的那种异常的情况呢?



此问题已经解决,参照https://www.,同时编译多个文件即可重现书中所说的问题。


[此贴子已经被作者于2017-7-29 19:41编辑过]

搜索更多相关主题的帖子: 专家 编程 指针 文件 编译 
2017-07-29 15:06
youth7
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-7-21
收藏
得分:0 
补充一下,我搜索过这个问题,有其他人是可以重现可以问题,但是是在vc6上面重现的,因为我是win10不想装vc6所以没有尝试这种情况。我手头上的编译器有gcc7、clang8、digital mars,全部试过了但是都是提示类型不匹配因此无法重现书中说的那个例子
2017-07-29 15:23
youth7
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-7-21
收藏
得分:0 
回复 2楼 renkejun1942
按照你这样确实是可以通过编译,但是我发现你的主文件中没有通过include来引入第1个文件,如果我在主文件中增加include来引入第1个文件的话,还是会继续报错,请问可以详细说明一下吗?



[此贴子已经被作者于2017-7-29 15:40编辑过]

2017-07-29 15:36
youth7
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-7-21
收藏
得分:0 
回复 5楼 renkejun1942
如果我不include第1个文件,那么在主文件中再使用a的话(例如printf("%d",a)),就会报undefined reference to `a'。如果不需要include的话,我要怎样才能访问第1个文件中的数组a呢?
2017-07-29 15:46
youth7
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2017-7-21
收藏
得分:0 
回复 8楼 renkejun1942
非常感谢,已经通过编译重现了问题,参考了这里https://www.
2017-07-29 16:11
快速回复:关于《C专家编程》中数组和指针的一个问题
数据加载中...
 
   



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

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