新浪博客

[C语言]如果函数参数列表中含有指针,调用时参数该怎么写呢?

2018-03-10 20:21阅读:
为节省各位的时间,先说结论:如果函数参数列表中的某个参数含有*符号,调用时,总是可以可在参数名前加&,有些情况下不加&也对,但加上&肯定没问题。


例如RTKLIB中的一个函数:
  1. extern int postpos(gtime_t ts, gtime_t te, double ti, double tu,
  1. const prcopt_t *popt, const solopt_t *sopt,
br> const filopt_t *fopt, char **infile, int n, char *outfile,
  • const char *rov, const char *base)
  • 在这个函数的参数列表中,有结构体(ts, te),有double类型变量(ti, tu),有指向结构体的指针(popt, sopt, fopt),指向字符数组指针的指针(infile),指向字符数组的指针(outfile),指向字符数组常量的指针(rov, base)。
    定义各个输入的常量和变量后,调用该函数时,可以像这样书写:
  1. ret=postpos(ts,te,tint,0.0,&prcopt,&solopt,&filopt,infile,n,outfile,'','');
指向结构体的指针(popt, sopt, fopt),必须要在结构体名前加上取地址符号&。其他含指针的参数(infile, outfile, rov, base),参数名前可加&,也可不加。
现将规律总结为下表:
参数列表

函数调用

简单数值型变量
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


如果你觉得表格太复杂了,那么用一句话来概括:如果函数参数列表中的某个参数含有*符号,调用时,总是可以可在参数名前加&,有些情况下不加&也对,但加上&肯定没问题。

    我的更多文章

    下载客户端阅读体验更佳

    APP专享