【发布时间】:2017-05-10 13:08:54
【问题描述】:
我必须编写函数来读取数组长度和数组,并使该数组能够在其他函数中使用。
我已经阅读了很多关于指针的内容,但我没有找到我的问题的答案。 这是我的代码。
int readArray(int *ar, int *pointer){
int i, length;
scanf("%d", &length);
ar = (int *) malloc(length * sizeof(int));
for(i = 0; i < length; i++){
scanf("%d", pointer + i);
}
return length;
}
void printArray(int *pointer, int length){
int i;
for(i = 0; i < length; i++){
printf("%d ", *(pointer + i));
}
}
int main(){
int *pointer, *ar, length;
pointer = ar[0];//Here I get the warnings.
length = readArray(ar, pointer);
printArray(pointer, length);
return 0;
}
代码块中的警告:
warning: assignment makes pointer from integer without a cast
和
warning: 'ar' is used uninitialized in this function [-Wuninitialized]|.
这个问题与这个Dynamic memory access only works inside function 不同,因为我必须在 readArray 函数中读取数组长度。而对我来说,作为一个初学者,只有一点点不同就是很大的不同。
【问题讨论】:
-
pointer = &ar[0];或pointer = ar;警告将消失。但这并不意味着程序可以工作。 -
仍然是同一代码行的第二个警告(警告:'ar'在此函数[-Wuninitialized]中未初始化使用)
-
所以初始化它。
-
我知道如何初始化一个指向变量的指针(int *p, a; p = &a) 但我被困在这里了。
标签: c arrays function pointers