首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

指针传递数组的有关问题

2012-03-31 
指针传递数组的问题声明一个三维数组 uint8_t *yuv[54][3],读取数据,再将yuv传递给一个lib库里的函数这时

指针传递数组的问题
声明一个三维数组 uint8_t *yuv[54][3],读取数据,再将yuv传递给一个lib库里的函数 
这时为什么在lib的函数里读取不到yuv指向的内存区域的数据?抛出内存异常。而在lib之外是可以读取到的.
请有相关经验的朋友帮忙!

[解决办法]
yuv[i][j][k];

;这个要引用6楼的一句话:数组可以转换成其首元素的指针。 --(1)

c++标准规定:“[]”是一个有两个操作数的运算符,
例如
 char arr[3]; 
 arr[1];//这里两个操作数分别是 arr和1
标准还规定:
要求其中一个操作数是指针类型,另一个是整型。

但是arr[1]这句话中,arr是个数组,是不符合要求的,于是应用(1)将其转换成指针,故可以。

yuv的类型是 char*[15][3];是个数组,可转换成char*(*)[3]指针类型。
所以 yuv[i] ok;
yuv[i]的类型是 char *[3];//还是数组,可以转换成char**类型。

所以 (yuv[i])[j] 也 ok

(yuv[i])[j]的类型是 char*;
符合下标运算的要求。
((yuv[i])[j])[k] 也ok

热点排行