| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1115 人关注过本帖
标题:传值调用问题
只看楼主 加入收藏
跆拳勇士
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: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10609
专家分:43210
注 册: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
快速回复:传值调用问题
数据加载中...
 
   



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

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