CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
IBM Rational 系统开发最佳实践工具包 WebSphere MQ 最佳实践 TOP 15
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  C语言

数组名与指针

楼主xjyr(先活着)2006-03-03 12:28:19 在 C/C++ / C语言 提问

在A文件有如下定义:  
        char   *p   =   "china!";  
        在文件B有如下声明  
        extern   char     p[];  
  那么在B文件中的p,如果在B文件该声明的后面再使用时,编译器是把p按数组名来看待,还是按一个普通指针变量来看待。  
       
      《C专家编程》4.3.2节有这样有这样一段话:  
        “现在让我们看一下当一个外部数组的实际定义是一个指针,但却以数组的方式对其引用时,会引起什么问题,需要对内存进行直接的引用,但这时编译器所执行的是却是对内存进行间接引用,之所以如此,是因为我们告诉编译器我们拥有的是一个指针”  
      我怎么看着晕啊。   到底原文件是按数组定义还是指针定义,声明又是按什么声明的啊?声明后的p又是按什么来对待啊?  
      请高手赐教! 问题点数:0、回复次数:5Top

1 楼xjyr(先活着)回复于 2006-03-07 10:29:45 得分 0

是我学的太好了么?  
      期待中。。。。。。。。。Top

2 楼nila(昵拉)回复于 2006-03-09 17:16:20 得分 0

*p   =   p[];Top

3 楼xiuren(xiuren)回复于 2006-03-10 04:19:23 得分 0

声明后p就是按照一个指向数组的指针来对待的Top

4 楼terryjwf(开大奔的帅哥)回复于 2006-03-10 12:45:38 得分 0

char   *p   =   "china!";  
  此时并没有给p分配空间,只是让p指向china的首地址,故所以对内存是间接引用。  
  当char   p[]   =   "china!";时,对内存是直接引用。故定义和声明需要匹配,即:  
  char   *p   =   "china!";  
  extern   char   *p;  
  或者:  
  char   p[]="china!";  
  extern   char   p[];  
  这样就匹配了!Top

5 楼wumingchenchao(一缕阳光)回复于 2006-03-16 19:11:29 得分 0

我也看的晕,标记先Top

相关问题

  • 数组指针与指针数组
  • 指针与数组
  • 指针与数组问题
  • 数组指针与指针数组有什么不同?
  • 请问指针数组与数组指针的区别
  • 数组指针与指针数组的区别???(讨论)
  • 指针与数组的问题
  • 指针与数组的问题!!!谢谢
  • 关于数组与指针的问题?
  • 关于数组与指针的问题

关键词

  • 指针
  • 编译器
  • 内存
  • 文件
  • 数组
  • 引用
  • 定义
  • china
  • 声明
  • extern

得分解答快速导航

  • 帖主:xjyr

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo