开发平台(Platform): (Ex: Win10, Linux, ...)
win 7
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
code blocks
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
两种情况,第一种正常,第二种有问题,不懂为什么。
1.
void test(unsigned char img[640][480])
{
unsigned char *img_r; //用一维指标接二维阵列(不懂目的,有什么好处吗?)
imgr = &img[0][0];
执行运算..
}
main()
{
unsigned char img[640][480];
...
test(img);
}
2. 其实这是我改的,compile出错,有时却会顺利执行到结束
void test(unsigned char **img)
{
unsigned char *img_r; //用一维指标接二维阵列(不懂目的,有什么好处吗?)
img_r = img;
执行运算..
}
main()
{
unsigned char **img;
unsigned long i;
img=(unsigned char**)malloc(512*sizeof(unsigned char*));
for(i=0; i<512; i++)
img[i]=(unsigned char*)malloc(640*sizeof(unsigned char));
test(img);
}
喂入的资料(Input):
image raw data
预期的正确结果(Expected Output):
我是不知道为何原本的程式要把二维位址传到一维,
但不论目的,我觉得我改这样跟原本没什么差吧?
除了在内存内 可能排列不太一样之外(?
错误结果(Wrong Output):
有时程式执行到一半直接当掉,检查是在test副程式内运算一维阵列时出错
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
1.我不知道为何要丢给一维去处理,这样有什么好处吗? 比较快?
(那干脆读图就用一维接阿@@?)
2.我这两种写法有什么具体的差别吗? 我是不是想错什么了?