gpt4 book ai didi

C:如何从函数返回数字数组

转载 作者:行者123 更新时间:2023-11-30 21:07:38 24 4
gpt4 key购买 nike

我想制作一个可以打印莫尔斯电码的 C 程序,但我在将 Y 的值返回到主函数时遇到了麻烦,以便稍后我可以使用 Y 的值进行比较它与另一个基本字符串一起打印答案。我也有一个疑问,请知道的 friend 解答一下。如果我将长度参数设置为全局,主函数的输入长度值是否会存储在该参数中?提前致谢

int length;

int *callfunction(int x){
int temp=x;
int Y;
static int r[1000];

if(temp==0 || temp==1){
Y=1; // for a
}
else if(temp==2 || temp==3){
Y=2; //for b
}
else if(temp==4 || temp==5){
Y=3; //for c
}
else if(temp==6 || temp==7){
Y=4; // for d
}
for(int i =0;i<length;i++){
r[i]=Y;
}
return r;
}

int main(){
int i,j,k,*p[1000];
char string[100];
char string1[]={'A','a','B','b','C','c','D','d'};
const char* string2[]={"•-","-•••", "-•-•","-••"};
printf("Enter a string:");
gets(string);
printf("The entered string is:%s\n",string);
length= strlen(string);
printf("Length=%d\n",length);

for(j=0;j<length;j++){
for(i=0;i<8;i++)
if(string1[i]==string[j]){
p[i] = callfunction(i);
}
}
for(i=0;i<length;i++){
printf("%d",p[i]); //I want display the Y number here
printf("\n");
}

getchar();
return 0;
}

程序执行没有任何错误,但执行完成后我没有得到Y的实际值,请帮忙

最佳答案

p[i] 是指向数组的指针,而不是值。

最简单的解决方案是将 p 重新定义为 int 数组,而不是指向 int 的指针数组:

int p[1000];

然后重新定义函数以将数组(作为指向第一个元素的指针)和数组的长度作为参数:

void callfunction(int x, int *r, size_t length){ ... }

然后调用传递所需参数的函数:

callfunction(i, p, length);

关于C:如何从函数返回数字数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42759595/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com