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;
}
谢谢
将代码更改为以下内容:
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; 
}
在main(),你分配一个10个整数的数组.调用将此数组function(num)的地址(技术上,数组的第一个元素的地址)传递给function()函数.在参数声明中,int num[]几乎完全相同int *num(我会让你思考那个).最后,当您num[]从函数中访问元素时,您不需要任何额外的元素*.通过使用num[i],您将访问i指向的数组的第th个元素num.
可能有助于记住在C中,以下内容完全相同:
num[i]
*(num+i)