不兼容的指针类型

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)

谢谢

Gre*_*ill 6

将代码更改为以下内容:

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)

  • 还没有人说过这个,但他应该_actually_将它改为`int function(int num [],size_t len)`.安全,人! (2认同)