1、传递数组,打印不出来

#include <stdio.h>
void solve()
{
printf("%d",x[]);
} int main()
{
int i;
for(i=;i<n;i++)
{
scanf("%d",&x[i]);
printf("%d\n",x[i]);
}
solve(); return ;
}

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

或者是这个错误for each function it appears in.)

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

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

#include <stdio.h>
int x[];
void solve()
{
printf("%d",x[]);
}
int main()
{
int i,n;
puts("输入数组长度");
scanf("%d",&n); for(i=;i<n;i++)
{
scanf("%d",&x[i]);
printf("%d\n",x[i]);
}
solve();
return ;
}

解决方案二:用指针传递首地址

传数组给一个函数,数组类型自动转换为指针类型,因而传的实际是地址。void func(int array[])void func(int array[])void func(int *array)所以以上三种函数声明完全等同。
#include <stdio.h>

void solve(int *x) //前面的int也不能省。
{
printf("%d",x[]);
}
int main()
{
int i,n;
puts("输入数组长度");
scanf("%d",&n);
int x[n]; for(i=;i<n;i++)
{
printf("输入第%d个数",i+);
scanf("%d",&x[i]);
printf("%d\n",x[i]);
}
solve(); //这里的x也不能省
return ;
}
数组给一个函数,常用的是可把数组的首地址传给函数。
即相当于是指针的应用
fun(int array[10][])
fun(int array[])
fun(int *array) 三种调用方法
完整版:输入的数组全部打印出来
#include <stdio.h>
int i,n; void solve(int *x) //前面的int也不能省。
{
for(i=;i<n;i++)
{
printf("%d",x[i]);
} }
int main()
{ puts("输入数组长度");
scanf("%d",&n);
int x[n]; for(i=;i<n;i++)
{
printf("输入第%d个数",i+);
scanf("%d",&x[i]);
printf("%d\n",x[i]);
}
solve(x); //这里的x也不能省
return ;
}

另外一个例子:

#include "stdio.h"
//指针:数组的传递
void int_set(int *vc,int no,int val)
{
int i;
for(i=;i<no;i++)
{
vc[i]=val;
}
}
int main()
{
int i;
int ary[]={,,,,};
int_set(ary,,);
for(i=;i<;i++)
printf("ary[%d]=%d\n",i,ary[i]);
return ; }

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

  1. c语言.函数指针数组

    函数指针: 一个指向函数的指针.一般用函数名表示. 函数指针数组:元素为函数指针的数组.转移表.c语言中函数不可以定义为数组,只能通过定义函数指针来操作. #include<stdio.h> ...

  2. C++和Java函数传递数组参数比较

    如果我想实现函数参数传递数组的业务需求,在Java中很容易实现,如下所示.因为Java有.length方法,可以获取数组的长度. public class Test { public static v ...

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

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

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

    数组与指针. 传首地址过去,然后通过地址输出数组元素. 1.一维数组 #include<iostream> using namespace std; #include <cstrin ...

  5. [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 ...

  6. C语言函数返回数组

    #include "stdio.h"/*int* set(int a,int *c){ int *b; b=malloc(sizeof(int)*3); c[0]=a; c[1]= ...

  7. C++ 数组作为函数参数时,传递数组大小的方法

    废话不多说,先上错误示范: void fun(int arr[arr_num]) { // ... } int main() { // ... int *arr = new int[10]; fun( ...

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

    [源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...

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

    1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. ...

随机推荐

  1. C++实现ping功能

    今天接到需求要实现ping的功能,然后网上查了一些资料,对网络编程的一些函数熟悉了一下,虽然还有一些细节不清楚,但是慢慢积累. 要实现这样的功能: 基础知识 ping的过程是向目的IP发送一个type ...

  2. 纯css3鼠标经过图片显示描述特效

    http://***/Article/5582 今天给大家带来的是用css3技术实现鼠标经过图片,显示图片描述的动画效果.鼠标经过图片时,图片动画缩小并渐变显示描述.我们一起看看效果图: 在线预览   ...

  3. PLSQL 连接Oracle11g (64位)

    1.用plsql连不上oracle 11g(64位),先去下载一个oracle 11g(32位客户端) http://www.oracle.com/technetwork/database/featu ...

  4. 《Genesis-3D开源游戏引擎完整实例教程-2D射击游戏篇08:弹幕系统》本系列完结

    8.弹幕系统 弹幕系统概述: 弹幕系统的设计体现了射击游戏的基本要素,玩家要在敌人放出的大量子弹(弹幕)的细小空隙间闪避,能在玩家闪躲弹幕的时候给玩家带来快感,接近满屏的子弹,增加了对玩家的视觉冲击力 ...

  5. 在fedora20下面手动为自己的安装程序创建桌面图标

    (博客园-番茄酱原创) 在/usr/share/applications/下面创建destktop文件,用于产生桌面图标 创建文件:touch android-eclipse.desktop 编辑文件 ...

  6. leetcode@ [354] Russian Doll Envelopes (Dynamic Programming)

    https://leetcode.com/problems/russian-doll-envelopes/ You have a number of envelopes with widths and ...

  7. 产品经理如何赢得开发人员的尊重和支持?-摘自infoq

    对于产品经理来说,赢得开发人员的尊重和支持,从某种意义上讲,是产品迈向成功的坚实一步.最近,知乎社区上的开发人员和管理者在前.后两个帖子中对此展开了激烈的讨论,其中不乏真知灼见. 林志霖Cray认为产 ...

  8. oracle 字符集转换:AL32UTF8->ZHS16GBK

    select userenv('language') from dual; --修改Oracle数据库字符集为ZHS16GBK : SQL>conn / as sysdba; SQL>sh ...

  9. 执行原始的 SQL 查询

    The Entity Framework Code First API includes methods that enable you to pass SQL commands directly t ...

  10. Hibernate关联关系之——单向n-1

    1 .单向 n-1 关联只需从n的一端可以访问1的一端 2.域模型: 从Order到Customer的多对一单向关联需要在Order类中定义一个Customer属性,而在Customer类中无需定义存 ...