我对如何使用指针之类的东西还很陌生,我想知道是否有人能帮我,因为我不知道我怎么能做我想做的事情。
我要做的是有3个方法,一个main,一个getArray和printArray,getArray应该使用指针。数组必须是二维的。例如:
void main() {
char *array[10];
array[0] = malloc(10);
getArray(&array[0]);
printArray(array[0]);
}
void getArray(char *array) {
scanf("%s", array); //or &array?
}
void printArray(char array[]) {
printf("%s", array);
}
我尝试使用上面的代码,当我用作输入时:“a”返回这个
a
o
--------------------------------
Process exited after 0.3538 seconds with return value 2
Press any key to continue . . .
我对指针还比较陌生,我也不太确定如何使用它们。对不起的。
提前感谢您的帮助!
最佳答案
getArray(&array[0]);
您正在通过char**
。
在程序中,有未定义的行为传递了错误的参数scanf()
。scanf()
尝试将读取的字符读入array
中包含的地址,该地址不是您分配的地址。这就是为什么你会有不明确的行为。scanf()
需要一个char*
,而您通过了char**
。
解决方案:getArray(array[0]);
同样,在传递array
的方法中也可以,因为它包含了读取字符串的地址。
除此之外:
您没有检查应该返回的malloc
值。在你完成工作后释放你的记忆。
如果你检查过警告,它会说
note: expected ‘char *’ but argument is of type ‘char **’
这应该让你对发生的事情有足够的了解。
正如Jonathan Leffler所指出的,在使用函数之前还要声明(或定义)函数。如前所述,则会出现类型不匹配错误。这是C99或更高版本所必需的。(C90允许它-在声明之前调用函数)。所考虑的隐式声明将是
int getArray()
。关于c - C-不同方法中的指针和数组,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47608538/