二维数组和二维指针的疑问(小弟我分低,给不了那么多,大家海涵)


二维数组和二维指针的疑问(我分低,给不了那么多,大家海涵)
在C语言中,数组名可以作为该数组的起始地址,当然它的地址也可以用一个指针表示。
但是在如下程序中存在问题,不知是是什么原因。

void   sum(int   img[176][144])
{
    ……;
}

int   main()
{
    int   img[176][144];
    ……;
    sum(img[176][144]);
    ……;
}

或者这样

void   sum(int   img[176][144])
{
    ……;
}

int   main()
{
    int   img[176][144];
    int   *p;
    p=img;
    ……;
    sum(img);
    ……;
}
都会出错说不能把参数int   [][]转换成   int   *
;
请问这是为什么

我想在函数中使用类似的参数,该如何设置。请大家指教。


c语言 指针 程序开发

ccjiong 12 years, 10 months ago


Run: C:\MinGW\bin\gcc.exe -ansi -pedantic -W -Wall D:\working\c\a.c
D:\working\c\a.c:1: warning: unused parameter 'img '
D:\working\c\a.c: In function main ': <br /> D:\working\c\a.c:10: warning: passing arg 1 ofsum ' makes pointer from integer
without a cast
D:\working\c\a.c:12: warning: control reaches end of non-void function

Press the Enter key to return to Source Insight...


void sum(int img[176][144])
{
/* ¡­¡­£»/
}

int main()
{
int img[176][144];
/
¡­¡­£»/
sum(img[176][144]);
/
¡­¡­£»*/
}

_Zfw_ answered 12 years, 10 months ago



青春散落一地 answered 12 years, 10 months ago


void sum(int img[176][144])
{
……;
}

int main()
{
int img[176][144];
int (*p)[144];//要这样声明才能进行 p=img
p=img;
……;
sum(img);
……;
}


来我是猪猪 answered 12 years, 10 months ago


void sum(int img[][144])
{
......;
}

int main()
{
int img[176][144];
......;
sum(img);
......;
}

如果能帮到你,没有分也可以^_^

野原·新之助 answered 12 years, 10 months ago

Your Answer