| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1977 人关注过本帖
标题:求助,找不出问题在哪
只看楼主 加入收藏
Leave_
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-8-15
结帖率:66.67%
收藏
已结贴  问题点数:20 回复次数:9 
求助,找不出问题在哪
#include <stdio.h>
#define M 10
#define B 4
void setstar (char*,int);
void arrout(char*,int);
main()
{  char c[M]={'A','B','C','D','E','F','G','H','I','J'};
   setstar(&c[4],M-B);
   arrout(c,M);
}
void setstar(char*t,int n)
{  int i;
    for(i=0;i<n;i++)
        *(t+i)='*';
}
void arrout(char*t,int n)
{
int i;
for(i=0;i<n;i++)
printf("%c",c[i]);
printf("\n");
}
一直显示F:\c++\dr\dddddda.cpp(10) : warning C4508: 'main' : function should return a value; 'void' return type assumed
F:\c++\dr\dddddda.cpp(20) : error C2065: 'c' : undeclared identifier
F:\c++\dr\dddddda.cpp(20) : error C2109: subscript requires array or pointer type
搜索更多相关主题的帖子: void char int c++ cpp 
2018-08-27 12:58
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:3 
warning C4508: 'main' : function should return a value; 'void' return type assumed
哎,估计是VC了,帮不了你。因为用哪个C标准来解释都解释不通VC为什么这样,我又不想教你用错误的void main。

我只能写个标准的C代码,供你参考(VC编译不了)
程序代码:
#include <stdio.h>

void setstar( char*, size_t );
void arrout( const char* t, size_t n );

int main( void )
{
    char c[10] = {'A','B','C','D','E','F','G','H','I','J'};
    setstar( &c[4], 10-4 );
    arrout( c, 10 );
}

void setstar( char* t, size_t n )
{
    for( size_t i=0; i!=n; ++i )
        t[i] = '*';
}

void arrout( const char* t, size_t n )
{
    for( size_t i=0; i!=n; ++i )
        putchar( t[i] );
    putchar( '\n' );
}

2018-08-27 13:18
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:13 
void arrout(char*t,int n)这个函数内将c改为t,如下:
printf("%c",t[i]);

126邮箱联系方式:no1xijin@126. com
2018-08-27 13:48
Leave_
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-8-15
收藏
得分:0 
回复 2楼 rjsp
感谢  我一直找不出错在哪
2018-08-27 14:11
Leave_
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-8-15
收藏
得分:0 
回复 3楼 no1xijin
这样好像是不行的啊  
2018-08-27 14:12
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:0 
回复 5楼 Leave_
这是修改为t后的源代码
程序代码:
#include <stdio.h>
#define M 10
#define B 4
void setstar (char*,int);
void arrout(char*,int);
main()
{  char c[M]={'A','B','C','D','E','F','G','H','I','J'};
   setstar(&c[4],M-B);
   arrout(c,M);
}
void setstar(char*t,int n)
{  int i;
for(i=0;i<n;i++)
*(t+i)='*';
}
void arrout(char*t,int n)
{
    int i;
    for(i=0;i<n;i++)
        printf("%c",t[i]);
    printf("\n");
}

126邮箱联系方式:no1xijin@126. com
2018-08-27 16:17
Leave_
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-8-15
收藏
得分:0 
回复 6楼 no1xijin
这样可以运行了 但是它的意义有点不通啊  并没有定义到数组t啊  t应该指针啊   大神能说一下吗?
2018-08-27 19:27
zhangchm2018
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:32
专家分:129
注 册:2018-8-18
收藏
得分:4 
int main(void)
{   
    // 你的代码
    return 0;
}
2018-08-27 19:37
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
收藏
得分:0 
回复 7楼 Leave_
1.因为你的函数定义为:void arrout(char*t,int n)
你调用它的代码为:arrout(c,M);
那么在arrout()函数内,c数组就被t取代了,arrout()函数内识别不了c,只认t。这是函数调用过程中实参和形参的区别,具体呢,你可以百度看看。
2.简单说来呢,数组名就是一个指针,比如本例中,c就是一个指针,而c[1]则是一个值。其中c和t是指向同一内容的指针,皆是指向数组c[]的第一个元素c[0]。而c[1]与条t[1]的值是一致的。这个呢,你可以百度下,数组与指针的关系。

126邮箱联系方式:no1xijin@126. com
2018-08-27 21:08
Leave_
Rank: 1
等 级:新手上路
帖 子:12
专家分:0
注 册:2018-8-15
收藏
得分:0 
回复 9楼 no1xijin
好的   懂了  十分感谢你的解惑
2018-08-27 21:55
快速回复:求助,找不出问题在哪
数据加载中...
 
   



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

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