cre*_*rea 4 c arrays types pointers function
我刚刚开始编程,所以指针和数组让我很困惑.该程序只是将0-9的随机数分配到数组中并打印出来
(#include <stdio.h> #include <stdlib.h> #include <time.h>)
int function(int *num[]){
int i;
for(i=0; i<10; i++){
srand((unsigned)time(NULL));
*num[i] = rand()%10;
printf("%d", *num[i]);
}
return 0;
}
int main(){
int num[10];
function(&num); // incompatable pointer type (how do i fix this?)
return 0;
}
Run Code Online (Sandbox Code Playgroud)
谢谢
将代码更改为以下内容:
int function(int num[]){
int i;
for(i=0; i<10; i++){
srand((unsigned)time(NULL));
num[i] = rand()%10;
printf("%d", num[i]);
}
return 0;
}
int main(){
int num[10];
function(num);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在main(),你分配一个10个整数的数组.调用将此数组function(num)的地址(技术上,数组的第一个元素的地址)传递给function()函数.在参数声明中,int num[]几乎完全相同int *num(我会让你思考那个).最后,当您num[]从函数中访问元素时,您不需要任何额外的元素*.通过使用num[i],您将访问i指向的数组的第th个元素num.
可能有助于记住在C中,以下内容完全相同:
num[i]
*(num+i)
Run Code Online (Sandbox Code Playgroud)