如何解决C中函数参数中的固定数组或指针之间的区别?
两者之间是否有区别?
void draw_line(float p0[2],float p1[2],float color[4]);
这:
void draw_line(float *p0,float *p1,float *color);
在C中?
解决方法
- 列表项
在C和C ++中,函数声明之间没有区别。
具有数组类型的函数参数被编译器隐式调整为指向数组元素类型的指针。
来自C标准(6.7.6.3函数声明符(包括原型))
7应调整参数声明为“类型数组” 到“类型的合格指针”,其中类型限定符(如果有) 是在数组类型派生的[和]中指定的那些...
这些声明
void draw_line(float p0[2],float p1[2],float color[4]);
void draw_line(float *p0,float *p1,float *color);
声明相同的一个函数,尽管编译器可以发出一条消息,指出存在多余的声明,但两者都可以存在于程序中。
C和C ++之间的区别在于,在C中,您可以在方括号中指定修饰符,并在表达式中使用关键字static来指定参数应提供的访问元素的数量。
- ...如果关键字static也出现在数组的[和]中 类型派生,然后对于每次调用该函数, 相应的实际参数应提供对第一个参数的访问 数组的元素,其元素的数量至少与 大小表达式。
在C和C ++中,用作此类参数的参数的数组也被隐式转换为指向其第一个元素的指针。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。