| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 528 人关注过本帖
标题:小菜请教个指针数组问题
只看楼主 加入收藏
aandh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-4
结帖率:0
收藏
已结贴  问题点数:20 回复次数:7 
小菜请教个指针数组问题
下面这段代码调试不过,在TC2环境下,请帮忙看看错误在哪里,并帮忙解释一下原因,谢谢各位大侠。
main()
{
  int a[3][3]={1,2,2,3,4,5,6,7,8,9};
  int *pa(3)={a[0],a[1],a[2]);
  int *p=a[0];
    int i;
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",*pa[i],p[i],*(p+i);
}
搜索更多相关主题的帖子: 小菜 指针 
2010-03-24 09:01
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:6 
正确代码:

int main()
{
  int a[][3]={1,2,2,3,4,5,6,7,8,9};//注意用a[][3]不用a[3][3]
  int *pa[3]={a[0],a[1],a[2]};//是*pa[3]不是*pa(3)
  int *p=a[0];
    int i;
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));//加个括号
}

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-24 09:09
ldg628
Rank: 12Rank: 12Rank: 12
等 级:火箭侠
威 望:3
帖 子:526
专家分:3036
注 册:2009-6-23
收藏
得分:6 
main()
{
  int a[3][3]={1,2,2,3,4,5,6,7,8,9}; //这里多了个元素
  int *pa[3]={a[0],a[1],a[2]};
  int *p=a[0];
    int i;
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
    for(i=0;i<3;i++)
      printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}
2010-03-24 09:10
aandh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-4
收藏
得分:0 
这么快就有答案了,谢谢二位
2010-03-24 09:12
okgays
Rank: 2
等 级:论坛游民
帖 子:15
专家分:26
注 册:2010-3-23
收藏
得分:6 
你的代码有错,首先数组初始化时个数有十个,而你定义的数组大小是9,其次在第二个for循环里,printf语句最后的分号前少了个).正确代码如下:
#include <stdio.h>

int main()
{
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    int *pa[3]={a[0],a[1],a[2]};
    int *p=a[0];

    int i;
    for(i=0;i<3;i++)
         printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));

    for(i=0;i<3;i++)
         printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));

    return 0;
}
2010-03-24 09:14
aandh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-4
收藏
得分:0 
程序更改如下还是有错误,分别在三个红色的地方,提示为:Illegal initialization in function main
main()
{
int a[][3]={1,2,3,4,5,6,7,8,9};
int *pa[3]={a[0],a[1],a[2]};
int *p=a[0];
  int i;
  for(i=0;i<3;i++)
      printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
  for(i=0;i<3;i++)
      printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}
2010-03-24 09:21
mywaylgh
Rank: 8Rank: 8
来 自:厨房
等 级:蝙蝠侠
威 望:5
帖 子:188
专家分:729
注 册:2010-3-10
收藏
得分:0 
试了下,用gcc编译正确,是符合c标准的
没用过TC,所以不清楚为什么还会有错误。

人生就像茶几 上面放着许多杯具

人生也像厨房 里面总有一些洗具
2010-03-24 09:34
aandh
Rank: 1
等 级:新手上路
帖 子:6
专家分:0
注 册:2010-3-4
收藏
得分:0 
请问6楼的代码在TC中为何出错?谢谢
2010-03-24 10:23
快速回复:小菜请教个指针数组问题
数据加载中...
 
   



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

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