当前位置:  技术问答>linux和unix

C程序问题:哪个高手帮我解释下下面的问题,主要是a[0]和&[0] 的区别 和编译器的问题??

    来源: 互联网  发布时间:2016-12-29

    本文导语:  #include "stdio.h" int main() { int a[3][3] = {0,1,2,3,4,5,6,7,8}; int *p1 = a[0]; int *p2 = &a[0]; printf("*(p1+1) = %d n",*(p1+1)); printf("*(p2+1) = %d n",*(p2+1));     return 0; } /* 这个程序在vc++6.0中编译出错,原因在于 int *p2 = &a[0]; 这...


#include "stdio.h"

int main()
{
int a[3][3] = {0,1,2,3,4,5,6,7,8};
int *p1 = a[0];
int *p2 = &a[0];
printf("*(p1+1) = %d n",*(p1+1));
printf("*(p2+1) = %d n",*(p2+1));
    return 0;
}



/*
这个程序在vc++6.0中编译出错,原因在于 int *p2 = &a[0]; 这句赋值出错,
但是在linux gcc中不会 ???

[root@localhost test]# ./a.out 
*(p1+1) = 1 
*(p2+1) = 1 
[root@localhost test]# 

*/

|
gcc加 -W你就会发现gcc也报warning
a[0]本来就是个数组名。特殊的是他也是一个地址。
所以 int *p = a[0]没问题

但是如果 &a[0],这种情况,就只能是数组的地址,在这一点检查上VC比gcc要严格一点而已。

|
a[0]是一个一维数组 int [3]类型;所以,&a[0]返回的地址 int (*)[3]类型;因此,你的p应该声明为int (*p)[3]; p = &a[0];

    
 
 

您可能感兴趣的文章:

  • c/c++服务器程序内存泄露问题分析及解决
  • unix程序中调用其他程序的问题
  • 走虚拟网卡内核程序和走物理网卡应用程序结合问题
  • wine中安装windows程序,程序崩溃的问题
  • 一个信息添加,修改,删除,查询的问题,程序出了一个问题实在不知道为什么,各位帮看一下程序如下
  • 请问linux下一个很简单的问题:我们的控制台下直接输入某个程序名就可以执行该程序,原理是什么?
  • Linux下面的开发好的Java程序,如何部署到其他机器?开发好的Java图形程序,终端上能否用?等问题
  • 程序发布的问题(动态连接库的问题)
  • linux初学者一简单问题!在线送分!linux设备驱动程序一书的第一个程序.
  • 紧急问题:我启动一个java程序之后用ps一看,为和显示我启动了多个程序?然后我kill-9第一个pid之后,又全部没了
  • ./configure时,提示 missing /usr/.../version.h文件?是系统问题?还是安装程序的问题?
  • jbuilder7问题 编译没有问题,内部运行编写的的java程序就退出了???
  • 请教高手一个简单问题:给定一个文件名,如何去查找该文件正在被几个程序使用,并怎么样才可以切断这个文件与正在打开该文件的程序之间的
  • 请教多线程程序的内存占用问题
  • 关于软件或者程序的源代码问题??
  • 几个Linux应用程序开发的问题请教LINUX程序员!
  • linux可执行程序运行速度问题
  • 多线程网络通讯程序的稳定性问题
  • 程序输出的问题
  • mysql iis7站长之家
  • shell脚本变量与应用程序同步的问题
  • 请问gdb是不是只能调试gcc编译的程序,在unix下用其它编译器编译的程序是不是不一定能用gdb调试的?
  • 关于arm交叉编译器4.3.3编译程序报错,但是3.4.5却能编译通过的问题
  • 怎么查看arm平台上的程序是用那个版本的交叉编译器编译的????
  • 请问在linux下编译程序怎么设置编译器字节对齐?
  • 使用gcc编译器进行代码编译出来的程序是否遵循gpl协议
  • 有在UNIX中调试C++程序的编译器吗?
  • 用jbuilder 编写的appliction 程序,如何独立于jbuilder 编译器之外运行?
  • 用-g编译器选项编译程序就在makefile中按下面样子的加进去吗:
  • 有人说用vc++写的程序,代码可以直接拿到linux下找编译器,就可以编译,是真的吗?
  • 请教使用vim开发的程序员,关于和编译器一起工作的问题
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • tc编译的dos程序和vc编译的win32控制台程序的异同
  • JB下,我的程序编译得好慢!请问用什么方法编译才可以快一点?或编译顺序改变一下?
  • 在cygwin编译驱动程序要不要交叉编译?
  • 编译JAVA程序的时候,如果需要的JAR不在CLASSPATH,有什么办法能成功编译吗???
  • 用JCreator写了一个小程序,有十几个class,当修改某个文件重新编译,javac并没有编译修改的文件,请问要如何做javac才会重新编译所有的
  • rethat系统以前是32位的 现在想用64位的,ESQL编译C程序,需要加什么编译参数啊?
  • 在网上下的许多ubuntu程序都需要编译,那应该用什么编译?
  • 在linux下用proc编译程序,'*.pc'文件编译后成了'*.c?',多了一个问号?
  • 谁编译过PLX9054 Linux的驱动程序,我给100分教我编译和安装??
  • 请问:在proc程序中,若里面有模板的类型,能不能通过预编译啊,(编译时老是无法识别类型,我的头文件都已包含了)
  • unix环境高级编程》源程序编译的讨论,编译成功、不成功的都请进!!!
  • 菜鸟问题: redhat linux 编译一个最简单的c程序, 其中包含了<studio.h>头文件,但在gcc编译时,提示找不到studio.h文件,请问各位大大
  • 如果重新编译了.so文件后,但程序运行结果还是编译前的情况,大概是什么问题呢?
  • 为什么我的程序编译的时候总是报有错,但是程序却编译出来了,而且能运行?
  • 我的linux程序 如何 在pc机器上运行。现在我用arm-linux-g++ 编译后的程序在我的嵌入设备上运行。
  • UNIX下的PRO*C的程序编译成C的程序为什么提示标示符没有声明?
  • MYSQL用什么编译嵌入式SQL的程序
  • Makefile,如何传递宏定义DEBUG?以便于程序编译或者跳过程序中#ifdef DEBUG中间的代码段?
  • 怎么去模拟AIX程序的编译环境
  • 怎么用GCC编译网络程序?
  • 重装服务器后IIS网站错误(应用程序中的服务器错误)
  • 为什么我在java程序里启动的一个程序在java程序关闭后,该程序的所有进程都关掉了
  • windows server2008上PowerBuilder程序系统错误解决方法
  • Linux 编程怎么样在程序开启一个程序,和关闭一个程序?
  • c语言判断某一年是否为闰年的各种实现程序代码
  • 请问从一个java程序中如何调用另一java程序,并控制可以其状态(最小化、最大化、结束程序),还有怎样知道那个被调用的程序结束。
  • 程序员的八种级别,你属于哪一级?
  • Linux下的程序是在内存中运行的吗?为什么在程序运行的时候可以删除程序文件?
  • Linux下指定运行时加载动态库路径及shell下执行程序默认路径
  • 我的程序是用c写的gtk+程序,有个函数的参数要传给它图片的文件名,但是图片和原程序不在同一目录下怎么办?怎么在程序里指定文件的路径
  • 在docker容器中通过apt-get安装新的程序


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3