自定义函数不太懂怎么定义函数类型和参数类型以及返回值怎么有问题?
#include <stdio.h>char mystyle(char *array,int i);
char mystyle(char *array,int i)//将接收的数组位置颠倒后返回
{
i--;
char *m = array;
for(i;i > 0;i--)
{
m = *array++;
}
return array;
}
int main()
{
char num;
for(int i = 0;( num = getchar()) != '\n';i++)
{
if(i == 9) num = '\0';
}
printf("%s",mystyle(&num,i));
return 0;
} 单从语法上说,
第一行红色是因为char *m = array[ i ]; 这行,等号左边是char*类型,等号右边是char类型,二者不匹配。
第二行红色是因为return array;这行,返回的array是一个char*,而函数类型定义的却是char,二者不匹配。
第三行红色是因为printf("%s",mystyle(&num,i));这行中的 i,i 是在for(int i = 0;......)这里声明的,它的作用域是for块,而printf中的 i 是在for块后面的,已超出了 i 的作用域。 https://www.runoob.com/cprogramming/c-functions.html
我觉得你应该再好好把这个看一遍 本帖最后由 superbe 于 2019-12-12 00:22 编辑
#include <stdio.h>
// char mystyle(char *array, int i); //mystyle函数定义在main前面,不必用函数原型
char* mystyle(char *array, int i) //返回类型为char*
{
int j;
char c, *m = array + i - 1; //m指向array末尾元素
for (j = 0; j < i / 2; j++, m--){ //交换对称的元素
c = array;
array = *m;
*m = c;
}
return array;
}
int main()
{
char num;
int i;
printf("Enter a string:\n");
for (i = 0; i < 9 && (num = getchar()) != '\n'; i++);
num = '\0';
printf("%s\n", mystyle(num, i));//num数组名代表首元素地址,不用&
return 0;
} 遇到这种问题,可以去翻翻资料书,或者网上找找教程,看看人家怎么弄的。 superbe 发表于 2019-12-12 00:21
但是我不清楚我的错在了哪里,错误提示:D:\c渔业\未命名1.cpp name lookup of 'i' changed for ISO 'for' scoping [-fpermissive]
D:\c渔业\未命名1.cpp (if you use '-fpermissive' G++ will accept your code)
页:
[1]