Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
405 views
in Technique[技术] by (71.8m points)

c - Incompatible pointer type, expected float * but argument is of type float (*)[2]

#define N 5
#define Nv 2

float Cities[N][Nv]={ {0,1}, {3,4}, {1,2}, {5,1} ,{8,9}};
void PrintVec2(float *a, int n) {   
   
    int i;
    for (i = 0; i < (n / 2); i++) printf("
%f %f", a[2 * i], a[2 * i + 1]);
    printf("
");
}

//somewhere I call this
PrintVec2(Cities,N*Nv);

New*Nv is a number, integer. How to fix this warning?

question from:https://stackoverflow.com/questions/65545629/incompatible-pointer-type-expected-float-but-argument-is-of-type-float-2

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

The prototype:

void PrintVec2(float *a, int n)

Does not match the input parameter:

PrintVec2(Cities,N*Nv);

The function prototype is looking for the address of the array. Change it to send &Cities[0][0]:

PrintVec2(&Cities[0][0],N*Nv);

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...