c語言函數傳遞數組


1、傳遞數組,打印不出來

#include <stdio.h>
void solve()
{        
  printf("%d",x[0]);
}

int main()
{      
    int i;
    for(i=0;i<n;i++)
    {
        scanf("%d",&x[i]);   
        printf("%d\n",x[i]);     
    }
    solve();  
    
    return 0;
}

[Error] error: `x' undeclared (first use in this function)

或者是這個錯誤for each function it appears in.)

------------------------------------------------

解決方案一:設置全局變量

#include <stdio.h>
int x[100];
void solve()
{        
  printf("%d",x[0]);
}
int main()
{      
    int i,n;
    puts("輸入數組長度");
    scanf("%d",&n);
    
    for(i=0;i<n;i++)
    {
        scanf("%d",&x[i]);   
        printf("%d\n",x[i]);     
    }
    solve();      
    return 0;
}

解決方案二:用指針傳遞首地址

傳數組給一個函數,數組類型自動轉換為指針類型,因而傳的實際是地址。void func(int array[10])void func(int array[])void func(int *array)所以以上三種函數聲明完全等同。
#include <stdio.h>

void solve(int *x) //前面的int也不能省。 
{        
  printf("%d",x[1]);
}
int main()
{      
    int i,n;
      puts("輸入數組長度");
    scanf("%d",&n);
     int x[n];  
    
    for(i=0;i<n;i++)
    {
          printf("輸入第%d個數",i+1);
        scanf("%d",&x[i]);   
        printf("%d\n",x[i]);     
    }
    solve();    //這里的x也不能省  
    return 0;
}

 

數組給一個函數,常用的是可把數組的首地址傳給函數。
即相當於是指針的應用
fun(int array[10][])
fun(int array[])
fun(int *array)

三種調用方法
完整版:輸入的數組全部打印出來
#include <stdio.h>
int i,n;

void solve(int *x) //前面的int也不能省。 
{  
  for(i=0;i<n;i++)
   {
      printf("%d",x[i]);    
   }      

}
int main()
{      
   
      puts("輸入數組長度");
    scanf("%d",&n);
     int x[n];  
    
    for(i=0;i<n;i++)
    {
          printf("輸入第%d個數",i+1);
        scanf("%d",&x[i]);   
        printf("%d\n",x[i]);     
    }
    solve(x);    //這里的x也不能省  
    return 0;
}

 另外一個例子:

#include "stdio.h"
//指針:數組的傳遞 
void int_set(int *vc,int no,int val)
{
    int i;
    for(i=0;i<no;i++)
    {
        vc[i]=val;        
    }
}
int main()
{
    int i;
    int ary[]={1,2,3,4,5};
    int_set(ary,5,1);
    for(i=0;i<5;i++)
    printf("ary[%d]=%d\n",i,ary[i]);
    return 0;
    
}
    

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM