一道关于C语言的函数 指针问题,求解释
原题http://wenwen.sogou.com/z/q165685085.htm其中count(s,&lc,&dc,&sc,&oc);一句为什么lc,dc,sc,oc...
原题http://wenwen.sogou.com/z/q165685085.htm
其中 count(s, &lc, &dc, &sc, &oc); 一句为什么lc,dc,sc,oc前要加 &
s前为什么不加? 展开
其中 count(s, &lc, &dc, &sc, &oc); 一句为什么lc,dc,sc,oc前要加 &
s前为什么不加? 展开
3个回答
展开全部
函数原型为:void count(char *s, int *a, int *b, int *c, int *d)
调用函数时为:
int lc, dc, sc, oc;
......
count(s, &lc, &dc, &sc, &oc);
&是取地址运算符。这样就把整型变量lc, dc, sc, oc的地址传给count函数中。因为是传地址,所以这些变量对应的值在函数返回时可以带回到调用函数。
s是数组,S本身就是地址,所以可以直接传给指针。
调用函数时为:
int lc, dc, sc, oc;
......
count(s, &lc, &dc, &sc, &oc);
&是取地址运算符。这样就把整型变量lc, dc, sc, oc的地址传给count函数中。因为是传地址,所以这些变量对应的值在函数返回时可以带回到调用函数。
s是数组,S本身就是地址,所以可以直接传给指针。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
因为count函数的定义中,相应的参数使用了指针形式,而调用端的变量是基本数据类型,所以传递参数时候,要使用&符号,取得该变量的地址值,才可以传递缎带指针形式的参数。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
count的参数是指针类型,要传地址,所以要加&
追问
那s前为什么不加
追答
s的定义是个数组,s代表数组的起始地址,它已经是个地址,不需要再加取地址符号&
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询