art*_*sol 4 c struct pass-by-reference pass-by-value
我在C中有一个函数,它接受一个结构数组作为参数:
int load_ini_parms(char * ini_file,
struct test_object s[],
int num,
struct lwm2m_object * l)
Run Code Online (Sandbox Code Playgroud)
我的问题是,将指针传递给结构数组是否会更好?有什么优点或缺点?
它没有任何区别,因为将数组作为函数参数传递衰减为指针.
功能
int load_ini_parms(char *ini_file, struct test_object s[], int num, struct lwm2m_object *l)
Run Code Online (Sandbox Code Playgroud)
相当于
int load_ini_parms(char *ini_file, struct test_object *s, int num, struct lwm2m_object *l)
Run Code Online (Sandbox Code Playgroud)
在两种情况下都丢失了关于阵列大小的信息.
与这里其他人的说法相反,我说它确实对“更好的编程实践”产生了影响:
将参数声明为数组向函数的用户表明您期望的是一个数组。
如果您只声明一个指针,这不会告诉任何人您需要单个元素还是可能多个元素。
因此,我更喜欢用于单元素参数(例如“输出”参数)的指针和用于(可能)多个元素的数组。