如何解决函数中的 C 数组操作
在这段代码中,我希望用户在函数中输入数字,然后在 main 方法中打印数组,但是当我尝试在 main 方法中打印时,它给了我随机数。
例如: 1 2 3 给 1 3 1895586112
void arrayInput(int *arr) {
int x;
int y;
int z;
printf("enter 3 numbers =");
scanf("%d %d %d",&x,&y,&z);
arr[0]=x;
arr[1]=y;
arr[2]=z;
}
int main(int argc,char **argv){
int *arr[3];
arrayInput(&arr);
int i;
for(i=0; i<3; i++)
{
printf("%d ",arr[i]);
}
}
我想在不改变方法或参数类型的情况下改变数组值
解决方法
int *arr[3]
是指向 int
的指针数组。但是你想要一个 int
数组。
简单的改变:
int *arr[3];
arrayInput(&arr);
到
int arr[3];
arrayInput(arr);
这应该包含在你的 C 课本中。
奖励:
你可以替换这个复杂的代码:
void arrayInput(int *arr) {
int x;
int y;
int z;
printf("enter 3 numbers =");
scanf("%d %d %d",&x,&y,&z);
arr[0]=x;
arr[1]=y;
arr[2]=z;
}
这样:
void arrayInput(int *arr) {
printf("enter 3 numbers =");
scanf("%d %d %d",&arr[0],&arr[1],&arr[2]);
}
,
您的代码存在多个问题。
首先你已经声明了 int *arr[3];
这意味着指针数组。对于您的任务,需要一个简单的数组。数组变量包含第一个元素的地址,因此您不需要 &
。
简单修正后的代码如下:
#include <stdio.h>
void arrayInput(int arr[]) {
int x;
int y;
int z;
printf("enter 3 numbers =");
scanf("%d %d %d",&z);
arr[0]=x;
arr[1]=y;
arr[2]=z;
}
int main(int argc,char **argv){
int arr[3];
arrayInput(arr);
int i;
for(i=0; i<3; i++)
{
printf("%d ",arr[i]);
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。