c语言数组函数
㈠ c语言函数和数组结合
形参,可以是数组也可以是指针,形参变量名不需要和实参一样,所以可不使用a做变量名。但数组传参,传的地址,即使闭实参和形参名不一样,操作的地址都是一样的。
㈡ 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语言数组在函数中的定义
用malloc申请一段内存来将原数组内容复制一遍.
对复制的数组进行排序,并进行你需要的运算
用free释放内存(就你现在的需求,该内存将不再使用,应释放)
返回结果
要点是.申请到的内存赋值给函数的内部的变量,并且在释放前该变量不可用于其它用途.数据的指针操作换用别一指针进行.
由于malloc得到的内存不可能再次被malloc得到(由操作系统维护,无需担心).而该内存的使用周期内仅该函数可以使用其指针,所以其它单元不可能合法使用该内存.
㈤ c语言函数数组
#include<stdio.h>
#include<math.h>
voidsort(intarray[],intn)
{inti,j,k,t;
for(i=0;i<n-1;i++)
{k=i;
for(j=i+1;j<n;j++)
if(array[j]<array[k])//加括号,但是这时候就不是选择排序而是冒泡排序
{
t=array[i];
array[i]=array[j];
array[j]=t;
}
}
}
voidmain()
{
inta[]={1,5,6,8,9,2,3};
sort(a,7);
for(inti=0;i<7;i++)
{
printf("%3d",a[i]);
}
}
㈥ 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语言数组与函数
你的程序:
main()
{
int b[3];
b=pop();
}
int * pop()
{
int a[3],i;//定义的局部变量a[3]在调用完之后自动释放其空间
for(i=0;i<3;i++)
a[i]=i;
return a;//返回的是指向数组a[3]的地址而不是数组a[3]本身
}
注:既然上面说到调用的方法返回的是指向数组a[3]的地址,所以主函数中b接收的应该是指向数组a[3]的地址,而数组a[3]在方法调用完后又被释放了,所以b接收不到数组a[3],故出错。
正确的程序:
#include<stdio.h>
main()
{
int b[3];
pop(b,3);
}
void pop(int a[],int n)//该方法传入两个参数,第一个是传入指向数组的地址,第二个参数是传入数组的长度,不需写返回语句return,只需通过指向数组的地址的传入就可以直接将数组b[]的值改变
{
int i;
for(i=0;i<n;i++)
a[i]=i;
}
㈧ c语言数组调用函数
平均打印用的%d应该用%f
㈨ 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在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数。
(9)c语言数组函数扩展阅读:
指针函数和函数指针的区别:
这两个概念都是简称,指针函数是指返回值是指针的函数,即本质是一个函数。我们知道函数都有返回类型(如果不返回值,则为无值型),只不过指针函数返回类型是某一类型的指针。其定义格式如下所示:返回类型标识符*函数名称。
返回类型可以是任何基本类型和复合类型。返回指针的函数的用途十分广泛。事实上,每一个函数,即使它不带有返回某种类型的指针,它本身都有一个入口地址,该地址相当于一个指针。比如函数返回一个整型值,实际上也相当于返回一个指针变量的值,不过这时的变量是函数本身而已,而整个函数相当于一个“变量”。
参考资料:网络 -函数指针
㈩ C语言数组的查找函数
#include<stdio.h>
int main()
{
int a[5];
int i,max,min;
printf("input number:\n");
for(i=0;i<5;i++)
scanf("%d",&a[i]);
max=a[0];
min=a[0];
for(i=0;i<5;i++){
if(a[i]>max)
max=a[i];
}
for(i=0;i<5;i++){
if(a[i]<min)
min=a[i];
}
for(i=0;i<5;i++){
printf("%d",a[i]);
printf(" ");
}
printf("\n");
printf("最大值为%d\n",max);
printf("最小值为%d\n",min);
return 0;
}