指针传递数组的问题
声明一个三维数组 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