加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2018-03-10 20:21:25)
分类: 经验之谈

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


例如RTKLIB中的一个函数:

  1. extern int postpos(gtime_t ts, gtime_t te, double ti, double tu,
  1.                    const prcopt_t *popt, const solopt_t *sopt,
  2.                    const filopt_t *fopt, char **infile, int n, char *outfile,
  3.                    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

  

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


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有