[C语言]如果函数参数列表中含有指针,调用时参数该怎么写呢?
(2018-03-10 20:21:25)分类: 经验之谈 |
为节省各位的时间,先说结论:如果函数参数列表中的某个参数含有*符号,调用时,总是可以可在参数名前加&,有些情况下不加&也对,但加上&肯定没问题。
例如RTKLIB中的一个函数:
-
extern
int postpos (gtime_t ts,gtime_t te ,double ti ,double tu ,
-
prcopt_t *popt,const solopt_t *sopt, -
filopt_t *fopt,char **infile, int n ,char *outfile, -
char *rov, const char *base)
在这个函数的参数列表中,有结构体(ts,
定义各个输入的常量和变量后,调用该函数时,可以像这样书写:
- ret=postpos(ts,te,tint,0.0,&prcopt,&solopt,&filopt,infile,n,outfile,"","");
指向结构体的指针(popt,
现将规律总结为下表:
参数列表 |
|
函数调用 |
|
简单数值型变量 |
double a |
变量名 |
a |
数值型变量指针 |
double *a |
取地址 |
&a |
结构体实体 |
struct_t struct |
结构体 |
struct |
结构体指针 |
struct_t *struct |
取结构体地址 |
&struct |
const 字符数组指针 |
const char *str |
字符数组名或取地址或其完整内容 |
str或&str或"content" |
字符数组指针 |
char *str |
字符数组名或取地址 |
str或&str |
简单数值数组指针 |
double *array |
数组名或取地址 |
array或&array |
指向字符数组指针的指针 |
char **str |
字符数组名或取地址 |
str或&str |
指针数组,存放n个指针 |
char *str[] |
字符数组名或取地址 |
str或&str |
如果你觉得表格太复杂了,那么用一句话来概括:如果函数参数列表中的某个参数含有*符号,调用时,总是可以可在参数名前加&,有些情况下不加&也对,但加上&肯定没问题。