c语言函数传递数组
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语言函数传递数组的更多相关文章
- c语言.函数指针数组
函数指针: 一个指向函数的指针.一般用函数名表示. 函数指针数组:元素为函数指针的数组.转移表.c语言中函数不可以定义为数组,只能通过定义函数指针来操作. #include<stdio.h> ...
- C++和Java函数传递数组参数比较
如果我想实现函数参数传递数组的业务需求,在Java中很容易实现,如下所示.因为Java有.length方法,可以获取数组的长度. public class Test { public static v ...
- C语言结构体及函数传递数组參数演示样例
注:makeSphere()函数返回Sphere结构体,main函数中.调用makeSphere()函数,传递的第一个參数为数组,传递的数组作为指针.
- C++函数传递数组的两种方式
数组与指针. 传首地址过去,然后通过地址输出数组元素. 1.一维数组 #include<iostream> using namespace std; #include <cstrin ...
- [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 ...
- C语言函数返回数组
#include "stdio.h"/*int* set(int a,int *c){ int *b; b=malloc(sizeof(int)*3); c[0]=a; c[1]= ...
- C++ 数组作为函数参数时,传递数组大小的方法
废话不多说,先上错误示范: void fun(int arr[arr_num]) { // ... } int main() { // ... int *arr = new int[10]; fun( ...
- 不可或缺 Windows Native (6) - C 语言: 函数
[源码下载] 不可或缺 Windows Native (6) - C 语言: 函数 作者:webabcd 介绍不可或缺 Windows Native 之 C 语言 函数 示例cFunction.h # ...
- C语言学习笔记--数组参数和指针参数
1. 数组参数退化为指针的意义 (1)C 语言中只会以值拷贝的方式传递参数,当向函数传递数组时,将整个数组拷贝一份传入函数导致执行效率低下,C 语言以高效作是最初的设计目标,所以这种方法是不可取的. ...
随机推荐
- Hard-Margin SVM(支持向量机)
什么是Hard-Margin SVM?指的是这个向量机只适用于“数据完全可分(seperately)”的情况. (一)什么是支持向量机? 上述三条直线,选择哪一条比较好?直觉上来说,最右面的那条直线最 ...
- bzoj 3997 [TJOI2015]组合数学(DP)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=3997 [题意] 给定一个nm的长方形,每次只能使经过格子权值减1,每次只能向右向下,问 ...
- HDU5765 Bonds 最小割极
http://acm.hdu.edu.cn/showproblem.php?pid=5765 题意:无向连通图,问每条边在几个最小割极上 思路:用位压形式,表示边的关系.g[1<<i]=1 ...
- 用C语言实现ipv4地址字符串是否合法
用程序实现ipv4地址字符串是否合法,主要考察的是C字符串的操作. 搜索了下,网上没有特别好的实现,自己实现了下,见笑于大家,请指正. #include <stdio.h> #includ ...
- HDU 3577 Fast Arrangement (线段树区间更新)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3577 题意不好理解,给你数字k表示这里车最多同时坐k个人,然后有q个询问,每个询问是每个人的上车和下车 ...
- PAC(Proxy Auto Config)代理自动配置文件的编写
Proxy Auto Config文件格式说明 PAC文件实际上是一个Script, 通过PAC我们可以让系统根据情况判断使用哪一个Proxy来访问目标网址, 这样做的好处: 分散Proxy的流量,避 ...
- Unity3D之Mecanim动画系统学习笔记(四):Animation State
动画的设置 我们先看看Animation Clip的一些设置: Loop time:动画是否循环播放. 下面出现了3个大致一样的选项: Root Transform Rotation:表示为播放动画的 ...
- Ehcache(02)——ehcache.xml简介
http://haohaoxuexi.iteye.com/blog/2113728 ehcache.xml简介 ehcache.xml文件是用来定义Ehcache的配置信息的,更准确的来说它是定义Ca ...
- spring事务注解
@Transactional只能被应用到public方法上, 对于其它非public的方法,如果标记了@Transactional也不会报错,但方法没有事务功能. Spring使用声明式事务处理,默认 ...
- shiro安全三部曲
源:http://blog.csdn.net/boonya/article/details/8233435 第一部分 Shiro简介及项目目录结构 最新官方示例下载:http://shiro.apac ...