鱼C论坛

 找回密码
 立即注册
查看: 4623|回复: 8

这个不科学啊!!

[复制链接]
发表于 2013-8-28 15:58:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 苏小宁 于 2013-8-28 15:59 编辑

#include <stdio.h>
int main()
{/*
int a[2]={1,2};
int *p=&a;*/

int j=0;
int w=0;
        int a[2][3]={1,2,3,
                    4,5,6};

int (*p)[6]=&a[0][0];
        for (int i=0;i<2;i++)
                for(w=0;w<3;w++)
        {
                printf("%d\n",&p[w]);
        }

getchar();

        return 0;
}

error C2440: “初始化”: 无法从“int *”转换为“int (*)[6]”


各位老师知道为什么会这样吗???理论上讲编辑应该通过的啊!!!





小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2013-8-28 16:13:52 | 显示全部楼层
  1. #include <stdio.h>
  2. int main()
  3. {/*
  4. int a[2]={1,2};
  5.         int *p=&a;*/
  6.        
  7.         int j=0;
  8.         int w=0;
  9.         int a[2][3]={1,2,3,
  10.                 4,5,6};
  11.        
  12.         int (*p)[3]=a;
  13.         for (int i=0;i<2;i++)
  14.                 for(w=0;w<3;w++)
  15.         {
  16.                         printf("%d\n",&p[w]);
  17.         }
  18.                
  19.                 getchar();
  20.                
  21.         return 0;
  22. }
复制代码
这样就科学了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-28 16:25:14 | 显示全部楼层
老师谢谢你。我理解错了,我把那个数组的下标给搞错了。

还有老师我不明白这句
  int (*p)[3]=a;

理论上应该  是&a才对啊。去的首地址!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 16:36:57 | 显示全部楼层

你得回复我我才能看到啊。。。
int (*p)[3]=&a[0];这么写好像也行。。。
你查一下数组的内容吧。数组名称其实就是数组第一个元素的地址。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 16:41:23 | 显示全部楼层
http://baike.baidu.com/link?url=TddRkgGXufGhvFdNT4vYc7gj-xKOADXRffnCeRbflDUP973rD15m51QH6Ikdd7U1j6yM_2B31lhBOng7Lu4z1a
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 16:58:06 | 显示全部楼层
苏小宁 发表于 2013-8-28 16:25
老师谢谢你。我理解错了,我把那个数组的下标给搞错了。

还有老师我不明白这句

int a[3];
int (*p)[3] = &a;//这里的a的数据类型是int[3] 你就可以通过&a得到一个int(*)[3]
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-28 17:01:45 | 显示全部楼层
苏小宁 发表于 2013-8-28 16:25
老师谢谢你。我理解错了,我把那个数组的下标给搞错了。

还有老师我不明白这句

对于你这里的int a[2][3]
a在数值上和&a,&a[0],&a[0][0]都是相等的,但含义不一样
这里a和&a[0]的含义是一样的,表示的都是一个“指向含有三个整型元素的数组”型的地址。而这个,和你定义的指针变量p也是一致的。
所以int (*p)[3]=a或者=&a[0]从指向类型还是数值上来说都没有问题
而=&a或=&a[0][0]从数值上没有问题,但因为类型不匹配,编译器会警告(虽然可以运行)。
如果有兴趣可以看看我之前写的数组心得。但作为一般的应用来说,明白这里p匹配的是a和&a[0]就ok了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-31 16:10:50 | 显示全部楼层
liufei_vip 发表于 2013-8-28 16:36
你得回复我我才能看到啊。。。
int (*p)[3]=&a[0];这么写好像也行。。。
你查一下数组的内容吧。数组名 ...

老师啊谢谢你。我家这是新房子网线不稳定!!。所以没有及时回复您,万分感谢你的帮忙。我那样写是因为看了网上老师的写法。但是他的是通过的。不过我的编译不过。老师我那些看了。虽然不是很懂,但是我现在就按照您说的,就这样编译。刚刚遇到了了差不多的问题。我也是按照您这样改的,完全过了。。。我的方法笨。就是不明白的多打几遍。打的多了也就想的通了!!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-8-31 17:11:10 | 显示全部楼层
苏小宁 发表于 2013-8-31 16:10
老师啊谢谢你。我家这是新房子网线不稳定!!。所以没有及时回复您,万分感谢你的帮忙。我那样写是因为看 ...

不要叫我老师,共同学习,共同进步。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-11-5 20:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表