A. c语言怎么将数组作为函数参数传入
一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组。这样形参数组
修改时,实参数组也同时被修改了。形参数组的元素个数可以省略。
#include<stdio.h>
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
{
int ages[6] = {10,11,13,15,11,18};
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
}
输出结果为: array ==0x7fff5be26c00
array ==0x7fff5be26c00
100
B. C语言 如何把一个变量值赋给一个数组。
呵呵.你可以使用一个函数名字叫sprintf
下面是我给你写的详细代码你可以参考下
#include
<stdio.h>
int
main()
{
int
a=200;
char
im[]={"hello"};
sprintf(im,"%d",a);
//第一个参数是接受复制的char变量中间是格式化如果换成%c就是按照字符赋值.最后是赋值变量
printf("%s\n",im);
}
C. c语言中可不可以用变量定义数组的个数;
c语言中不可以用变量定义数组的个数。
可以使用mallo函数
mallo函数返回的实际是一个无类型指针,必须在其前面加上指针类型强制转换才可以使用;
指针自身=(指针类型*)malloc(sizeof(指针类型)*数据数量);
int*p=NULL;
intn=10;
p=(int*)malloc(sizeof(int)*n);
(3)变量为数组的函数c语言扩展阅读
mallo函数使用注意事项
调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。
调用free函数时,它将用户释放的内存块连接到空闲链上。到最后,空闲链会被切成很多的小内存片段,如果这时用户申请一个大的内存片段,那么空闲链上可能没有可以满足用户要求的片段了。
D. C语言 如何把一个变量值赋给一个数组
这个"如何"其实没有标准答案,因为int变量和该数组没啥关系,你想知道如何必须首先定义放的规则
E. C语言 如何把一个变量值赋给一个数组。
1.整型值赋值给整型数组:
int value=2;//定义一个变量,并赋值
int array[10];//定义一个数组
array[0]=value;//将变量值赋值给该数组。
2.整型值赋值给字符数组:
int value=3;
char str[10];
str[0]=value+'0';//赋值给单个字符
itoa(value,str,10);//数字转字符串函数itoa,10代表十进制。要包含头文件<stdio.h>
3.字符赋值给整型数组
char ch;
int array[10];
array[0]=atoi(ch);
仅举上例。
F. c语言的函数定义时,变量为数组与变量为一个元素,有什么区别
变量为数组,则调用者在调用时,传递的是一个地址值(数组名就是个地址),这好比对方告诉你他家的地址,通过这个地址,你可以访问他家中的任何人、物,你在这个地址中的一举一动都在影响这个家里的变化。
变量为元素,则调用者在调用时,传递的是一个数的数值。这好比,对方只告诉了你一个人名,你拿到这个人名,无论怎么修改,也只是改你这里的,人家还是叫人家的名字!
G. c语言的函数定义时,变量为数组与变量为一个元素,有什么区别
我觉得你在看引用调用和值调用那一部分。
首先,其实对于int
a[10],就是在内存中开辟一段存储空间存放十个整型元素。你要明白a不是一个变量,而是一个常量地址,什么地址呢?就是指向这10个元素空间的首地址(第一个元素的地址)。你可以给a赋个值试一试,编译不会通过,因为a是个常量,不是变量。
而对于变量,他就是代表一个值,可以对他进行任意赋值。
如果将数组传递给函数,因为数组名a是常量地址,所以函数形参有了主函数数组的地址,所以被调函数可以通过地址,修改主函数中数组的元素值。
明白吗?
H. 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;
}
I. C语言定义一个函数如果含有数组
void min(int a[],int x) //int x是用来标记传过来的数组的长度(即a数组指向的那个数组的长度)。
因为你在函数中计算的时候,a只能当做一个指针来用,没有具体的长度,而且你是int 型的,所以没有标准库函数来求你需要计算的数组的长度,所以你就没法计算。
void min(int a[],int b[])这样计算没错误,但是在计算的时候,你要知道a所指向的数组的长度和b所指向的长度,例如下面的例子:
a数组中有10个数,b数组中有2个数,a数组的大小是40个字节,而指向他的c数组大小只有4个字节,所以当你运算的时候,你要知道c指向的a数组的大小,同理,d也是一样。
#include"stdio.h"
#include"string.h"
void min(int c[],int d[])
{
int i,j=0;
int e[100]={0};
printf("c=%d
",sizeof(c));
for(i=0;i<10;i++)//a数组中有10个数
e[j++]=c[i];
for(i=0;i<2;i++)//b数组中有2个数
e[j++]=d[i];
for(i=0;e[i];i++)
printf("%d ",e[i]);
}
main()
{
int a[10]={1,2,3,4,5,6,7,8,9,10};
int b[2]={3,4};
printf("a=%d
",sizeof(a));
min(a,b);
}
J. C语言数组变量作为函数参数
将数组传递给函数后,数组就会退化为指针
voidfun(intx,intpp[],int*n)
voidfun(intx,int*pp,int*n)
//这两种写法是等价的
pp[j++]=j;//这句写错了
//要保存到pp里的是能整除的整数,而不是计数器j,如果这么写,那么pp的值肯定是{0,1,2,3,4,5,...}
//应该改成
pp[j++]=l;//L才是被整除的整数,要保存的是这个
*n=j;//n作为一个指针,负责传出得到的数字的数量,j是计数器,当所有的计算完毕后,j的值自然是这些数字的数量