‘壹’ c语言用函数实现数组赋值
void
Chg_Array(int
array[],
int
size,
int
value)
{
int
i;
for(i=0;i<size;i++)
array[i]=value;
}
Chg_Array(M_a,
31,
9)
//将数组
M_a
的31个元素赋值为9.
一维数组不需要二维指针。
‘贰’ 关于c语言中数组作为函数参数的函数之间调用问题
1、新建一个数组作为参数项目,如图所示:
‘叁’ c语言函数和数组结合
形参,可以是数组也可以是指针,形参变量名不需要和实参一样,所以可不使用a做变量名。但数组传参,传的地址,即使闭实参和形参名不一样,操作的地址都是一样的。
‘肆’ c语言 子函数中定义数组
是滴,除非定义在函数外面。作用域跟{}有关
‘伍’ c语言中能不能定义函数数组
函数不可以定义为数组,可以用函数指针来操作。
1.函数指针的数组定义方法:返回值类型( * 指针变量名[Number]) (形参列表)。
例如:
double add(double a,double b){}
double sub(double a,double b){}
double mul(double a,double b){}
double div1(double a,double b){}
double (*oper_func[])(double, double) = {add,sub,mul,div1};//函数指针的数组定义。
2.函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。
C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数。
(5)c语言数组函数扩展阅读:
指针函数和函数指针的区别:
这两个概念都是简称,指针函数是指返回值是指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示:返回类型标识符*函数名称。
返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。
参考资料:网络 -函数指针
‘陆’ c语言函数怎么调用数组部分
一、数组可定义为全局变量,函数直接调用。
二、数组可定义为局部变量,再通过参数传递到函数中调用(实参传数组名,表示数组首地址,也可通过指针或数组名+数字来传递数组局部地址)。
三、main函数想要调用函数返回的数组,可用static定义静态变量或malloc定义动态数组(字符串常量也可返回使用,但局部变量,在函数调用结束会被释放,不能作为返回地址使用)。
下面是演示代码:
#include <stdio.h>
#include <string.h>
#include <malloc.h>
char str1[]="我是全局变量数组";
char *fun0(char str2[]);
char *fun1();
char *fun2();
int main()
{
char *str3=NULL,*str4=NULL,*str5=NULL;
char str2[]="我是main函数的局部数组变量";
str3=fun0(str2);
printf("str3:%s,fun函数调用结束,我的地址依然可以使用 ",str3);
str4=fun1();
printf("str4:%s,fun函数调用结束,我的地址依然可以使用 ",str4);
str5=fun2();
printf("str5:%s,fun函数调用结束,函数结束不会自动释放 ",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函数申明的静态数组变量";
printf("str1:%s,fun函数可以直接调用 ",str1);
printf("str2:%s,fun函数通过参数将我的地址传进来 ",s);
return str3;
}
char *fun1()
{
char *str4="我是fun1函数的字符串常量";
return str4;
}
char *fun2()
{
int len;
char sTemp[]="这是一个临时数组,之后用于给mallc申请的地址传值,传递内容为:(我是fun函数通过mallic申请的数组)";
char *str5=NULL;
len=strlen(sTemp+63);
str5=(char *)malloc(sizeof(char)*len+1);
if(!str5)return NULL;
strcpy(str5,sTemp+63);
str5[len-2]=0;
return str5;
}
‘柒’ C语言数组的输出函数
#include "stdio.h" void input(int a[10]) //给一维数组输入数据 { int i; for(i=0;i<10;i++) scanf("%d",&a[i]); } void output(int a[10]) //输出一维数组输入数据 { int i; for(i=0;i<10;i++) printf("%d ",a[i]); } int main() { int b[10]; input(b); //调用input函数给数组b赋值 output(b);//调用output函数输出数组b中的值 }
‘捌’ c语言数组调用函数
平均打印用的%d应该用%f
‘玖’ c语言 数组作为函数参数怎样写
写函数时写成指针,比如一维的是 *p 二维的就是 **p
调用函数时,直接把对应的数组名当参数就行了,不要加[ ],传数组首地址进去就OK了
‘拾’ c语言数组在函数中的定义
用malloc申请一段内存来将原数组内容复制一遍.
对复制的数组进行排序,并进行你需要的运算
用free释放内存(就你现在的需求,该内存将不再使用,应释放)
返回结果
要点是.申请到的内存赋值给函数的内部的变量,并且在释放前该变量不可用于其它用途.数据的指针操作换用别一指针进行.
由于malloc得到的内存不可能再次被malloc得到(由操作系统维护,无需担心).而该内存的使用周期内仅该函数可以使用其指针,所以其它单元不可能合法使用该内存.