标题:传值调用问题
只看楼主
跆拳勇士
Rank: 1
等 级:新手上路
帖 子:29
专家分:9
注 册:2017-7-21
结帖率:100%
已结贴  问题点数:10 回复次数:2 
传值调用问题
#include <stdio.h>
void  fun( char *a )
{
  int i,j=0;
  for(i=0;a[i]!='\0';i++)
      if(a[i]!='*')
          a[j++]=a[i];
  a[j]='\0';
}

main()
{  char  s[81];
   void NONO (  );
   printf("Enter a string:\n");gets(s);
   fun( s );              //char *a传的不是地址吗,为什么写成fun(&s)反而不对了
   printf("The string after deleted:\n");puts(s);
   NONO();
}
搜索更多相关主题的帖子: 传值 调用 fun char string 
2017-12-12 10:10
吹水佬
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册:2014-5-20
得分:5 
s是数组名,可以看成是s[0]的地址(&s[0])
2017-12-12 10:18
GBH1
Rank: 7Rank: 7Rank: 7
等 级:黑侠
威 望:5
帖 子:112
专家分:510
注 册:2017-6-13
得分:5 
&s 是整个数组的首地址,s是数组首元素的首地址,其值相同但意义不同.
&s是整个数组的地址,类型是char *[81];
s是数组第一个元素是s[0]的地址,地址类型是char*型;
所以根据上述,若要使用&s作为参数进行传递的话,则需要进行对&s进行地址类型强转才可以,即在向这样传递参数
fun((char*)&s);
因此在进行指针赋值操作时,必须保证左右两边类型一致。

2017-12-12 20:47



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-483315-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.180705 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved