【发布时间】:2015-02-21 02:37:06
【问题描述】:
您好,我是 C 新手,正在学习指针。我正在编写一个简单的递归函数来测试它的参数int *a 和int size。在我的主要方法中,我预先使用& 发送print_array 我数组的第一个字符的地址。
这似乎不起作用,我在编译时收到“不兼容的指针类型”错误。我知道我可以删除 & 并且程序运行良好。我有一个问题:
为什么我不能用 & 从 main 中传入 my_array 的内存地址?我不应该只给函数数组的第一个元素的内存地址,它就可以处理其余的吗?
谢谢,希望这个问题不是太菜鸟。
#include <stdio.h>
#include <stdlib.h>
void print_array(int *a, int size){
if (size>0){
printf("%d\n", a[0]);
print_array(a+1, size-1);
}
}
int main(void){
int my_array[20];
int i;
for (i=0; i < 20; i++){
my_array[i] = rand() % 20;
}
/*the contents of the array*/
printf("The contents of the array\n");
for (i=0; i < 20; i++){
printf("%d\n", my_array[i]);
}
printf("The recursive method print\n");
print_array(&my_array, 20);
return EXIT_SUCCESS;
}
【问题讨论】: