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)

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

解决方案一:设置全局变量

#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;
}
时间: 2024-08-05 11:02:37

c语言函数传递数组的相关文章

Shell 向函数传递 数组

Shell 向函数传递 数组

ctypes给扩展模块中的函数传递数组和结构体

传递数组 楔子 下面我们来看看如何使用ctypes传递数组,这里我们只讲传递,不讲返回.因为C语言返回数组给python实际上会存在很多问题,比如:返回的数组的内存由谁来管理,不用了之后空间由谁来释放,事实上ctypes内部对于返回数组支持的也不是很好.因此我们一般不会向python返回一个C语言中的数组,因为C语言中的数组传递给python涉及到效率的问题,python中的列表传递直接传递一个引用即可,但是C语言中的数组过来肯定是要拷贝一份的,所以这里我们只讲python如何通过ctypes给

C语言结构体及函数传递数组参数示例

注:makeSphere()函数返回Sphere结构体,main函数中,调用makeSphere()函数,传递的第一个参数为数组,传递的数组作为指针. 版权声明:本文为博主原创文章,未经博主允许不得转载.

C语言结构体及函数传递数组參数演示样例

注:makeSphere()函数返回Sphere结构体,main函数中.调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针.

C++函数传递数组的两种方式

数组与指针. 传首地址过去,然后通过地址输出数组元素. 1.一维数组 #include<iostream> using namespace std; #include <cstring> void farray1(int array1[],int len)//注:此处是无法通过array1得到长度的,只能通过传参,因为其是数组首地址. { for(int i=0;i<len;i++) { //cout<<array1[i]<<endl; cout<

[py]给函数传递数组和字典

一 , 1.1传元组 def fun(x): print x t=(1,2) fun(t) 1.2传元组 #传元组 def fun(x,y): print x,y # t=(1,2) t=(1,2,3,4,5) #这样因为参数多少不一致,会导致报错 fun(*t) 二. 传字典 #总之值要一一对应起来. 方式1: dic={'name':'maming','age':22} def fun(age=22,name='maming'): #key要一样. print name,age fun(**

C语言学习笔记--数组参数和指针参数

1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. (2)参数位于栈上,太大的数组拷贝将导致栈溢出. (3)将数组名看做常量指针,传递的是数组的首元素地址,而不是整个数组. 2. 二维数组参数 (1)二维数组参数同样存在退化的问题: 二维数组可以看做是一维数组,其中的每个元素又是一个一维数组 (2)二维数维参数中第一维的参数可以省略 ①void f(

不可或缺 Windows Native (6) - C 语言: 函数

[源码下载] 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h #ifndef _MYHEAD_FUNCTION_ #define _MYHEAD_FUNCTION_ #ifdef __cplusplus extern "C" #endif // 函数声明 // 像这种在 .h 中声明的函数,如果想被外部文件调用的话,则外部文件不用再声明即可调用 char *demo_cFunction(); long recursion

黑马程序员——c语言学习心得——函数传递二维数组

黑马程序员——c语言学习心得——函数传递二维数组 -------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 一.定义指针的时候一定要初始化.   变量定义的时候给变量初始化,这是保证不出错的一个很好的习惯.尤其是在指针的使用上,如果我们没有给指针初始化,就会出现野指针,该指针的指向并不是我们所希望的,一旦错误的释放了这个指针,就会发生内存的访问.那么如何初始化指针变量呢,一般有以下几种方法:   1.初始化空指针   int* pInteger=N