骇客king 发表于 2015-7-23 14:47:21

二维数组地址问题

二维数组
int sorc={{80,90,70,100},{81,91,71,99},{84,94,79,98}};
定义一个二维数组


这是一个二维int型数组,每个元素占用4个字节,但是请看图片,为什么行距是10呢,不是4*4=16呢。

默默路过 发表于 2015-7-23 14:47:22

骇客king 发表于 2015-7-23 14:51
换个问题
#include
int *fun(int a,int (*sz))


int (*sz);这个 sz 指向的是还有 4个元素的数组的首地址的地址,虽然在数值上是一样的,但是含义不同,指向数组首地址的地址的是 数组指针相当于2级指针,函数返回值为1级指针,固此需要强转,而且此处的+a的长度是以整个数组的长度为基本单位的 加的字节数是a * 4 *sizeof(int)。 这种思维模式在数据结构中很常见!

骇客king 发表于 2015-7-23 14:49:04

脑残了,这是16进制的10,就是16了。。。不好意思,基本问题~

骇客king 发表于 2015-7-23 14:49:51

脑残了,这是16进制的10,就是16了。。。不好意思,基本问题~

骇客king 发表于 2015-7-23 14:51:18

换个问题
#include <stdio.h>
int *fun(int a,int (*sz))
{
//        return sz+=a;
        int *p;
        p=*(sz+a);
        return p;
}
注释那行,为什么提示类型不符合,但是能编译运行,非得强制转一下指针吗?传进来的不就是指针吗?

哥斯拉不说话 发表于 2015-7-23 14:57:03

本帖最后由 哥斯拉不说话 于 2015-7-23 15:11 编辑

return *(sz+=a);

heatonlwm 发表于 2015-7-23 17:10:58

这是16进制的10,就是16了

weisuo 发表于 2015-7-26 12:01:23

V一直古代

weisuo 发表于 2015-7-26 12:06:29

不知道顶

weisuo 发表于 2015-7-26 12:08:07

~~不知道

weisuo 发表于 2015-7-26 12:08:43

不知道

weisuo 发表于 2015-7-26 12:09:58

还是不知道

cqj9006 发表于 2015-7-26 21:30:26

看看

ryxcaixia 发表于 2015-7-27 09:05:35

sz是一个"类似"二级指针的东西
你定义返回值为int*
却要返回一个int**
自然报错

kingking27 发表于 2015-8-1 15:10:07

传进来的形参是二维指针,返回值是一维的

阔怀 发表于 2015-8-5 11:39:07

十进制与十六进制的区别

淫令天下 发表于 2015-8-5 18:35:44

为什么那么多正确的回复,,,却还是没有解决的问题呢???
页: [1]
查看完整版本: 二维数组地址问题