二维数组地址问题
二维数组int sorc={{80,90,70,100},{81,91,71,99},{84,94,79,98}};
定义一个二维数组
这是一个二维int型数组,每个元素占用4个字节,但是请看图片,为什么行距是10呢,不是4*4=16呢。 骇客king 发表于 2015-7-23 14:51
换个问题
#include
int *fun(int a,int (*sz))
int (*sz);这个 sz 指向的是还有 4个元素的数组的首地址的地址,虽然在数值上是一样的,但是含义不同,指向数组首地址的地址的是 数组指针相当于2级指针,函数返回值为1级指针,固此需要强转,而且此处的+a的长度是以整个数组的长度为基本单位的 加的字节数是a * 4 *sizeof(int)。 这种思维模式在数据结构中很常见! 脑残了,这是16进制的10,就是16了。。。不好意思,基本问题~ 脑残了,这是16进制的10,就是16了。。。不好意思,基本问题~ 换个问题
#include <stdio.h>
int *fun(int a,int (*sz))
{
// return sz+=a;
int *p;
p=*(sz+a);
return p;
}
注释那行,为什么提示类型不符合,但是能编译运行,非得强制转一下指针吗?传进来的不就是指针吗? 本帖最后由 哥斯拉不说话 于 2015-7-23 15:11 编辑
return *(sz+=a); 这是16进制的10,就是16了 V一直古代 不知道顶 ~~不知道 不知道 还是不知道 看看 sz是一个"类似"二级指针的东西
你定义返回值为int*
却要返回一个int**
自然报错 传进来的形参是二维指针,返回值是一维的 十进制与十六进制的区别 为什么那么多正确的回复,,,却还是没有解决的问题呢???
页:
[1]