c语言函数变量是数组 c语言用变量定义数组大小

c语言的函数定义时 , 变量为数组与变量为一个元素,有什么区别?我觉得你在看引用调用和值调用那一部分 。
首先,其实对于int
a[10],就是在内存中开辟一段存储空间存放十个整型元素 。你要明白a不是一个变量,而是一个常量地址 , 什么地址呢?就是指向这10个元素空间的首地址(第一个元素的地址) 。你可以给a赋个值试一试,编译不会通过,因为a是个常量,不是变量 。
而对于变量,他就是代表一个值,可以对他进行任意赋值 。
如果将数组传递给函数,因为数组名a是常量地址,所以函数形参有了主函数数组的地址,所以被调函数可以通过地址,修改主函数中数组的元素值 。
明白吗?
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函数调用结束,我的地址依然可以使用\n",str3);
str4=fun1();
printf("str4:%s,fun函数调用结束 , 我的地址依然可以使用\n",str4);
str5=fun2();
printf("str5:%s,fun函数调用结束 , 函数结束不会自动释放\n",str5);
free(str5);
return 0;
}
char *fun0(char s[])
{
static char str3[]="我是fun函数申明的静态数组变量";
printf("str1:%s,fun函数可以直接调用\n",str1);
printf("str2:%s,fun函数通过参数将我的地址传进来\n",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语言中,定义一个函数,函数输出结果是一个数组,整个的形式是怎么样的?提供两个办法c语言函数变量是数组:
1.在主调函数中建立数组c语言函数变量是数组 , 将数组指针传给自定义c语言函数变量是数组的函数c语言函数变量是数组,处理后主调函数中的数组值也就变化了 。
void fun(int a[],int n){
........
}//其中a[]就是要输入的数组,n是这个数组的长度 。
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0};
fun(arry,10);
......
}
2.可以在主调函数中建立数组并把首地址和长度传给函数,在函数中创建一个动态数组 , 处理完后把动态数组的首地址返回主调函数 , 最后在主调函数中释放动态申请的内存 。
int *fun(int a[],int n){
int *p=(int *)malloc(n*sizeof(int));//申请内存.
if(!p){//判断是否申请成功.
printf("failure...");
exit(0);
}
memcpy(p,a,n*sizeof(int));//把主调函数的数组拷贝过来.
......
return p;
}
void main(void){
int arry[10]={1,2,3,4,5,6,7,8,9,0},*ptmp;
ptmp=fun(arry,10);
......
free(ptmp);//释放申请的空间.
}
数组的内容是不能一一传给函数的……
C语言中自定义的函数中有数组,应该如何运用该函数方法
有2
将该数组定义为全局变量,即:
int
g_arr;
void
fun()
{...}
void
main()
{...}
2.将该数组作为函数参数传递到自定义函数里 , 即:
void
fun(int
arr[])
{...}
void
main()
{
int
arr[10];
fun(arr);
}
怎么使C语言的函数返回值为一个数组// 方法1,用静态变量进行返回
char *SubFunction(void)
{
static char szText[5] = "adfa"; // 用静态空间
【c语言函数变量是数组 c语言用变量定义数组大小】//对p进行赋值操作
return szText;
}
void Caller() // 这个函数调用SubFunction
{
TRACE("%s\n", SubFunction);
}
// 方法2,用指针传递
void SubFunction(char *pText1, char *pText2)
{
// 对pText1, pText2运算
strcpy(pText1, "love");
strcpy(pText2, "you");
return;
}
void Caller() // 这个函数调用SubFunction
{
char szText1[5], szText2[5]; // 当然这里也可以动态分配内存
SubFunction(szText1, szText2); // szText1, szText2就是带回c语言函数变量是数组的值
TRACE("%s %s\n", szText1, szText2);
}
C语言数组变量作为函数参数将数组传递给函数后,数组就会退化为指针
void fun(int x, int pp[], int *n)
void fun(int x, 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的值自然是这些数字的数量
关于c语言函数变量是数组和c语言用变量定义数组大小的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息 , 记得收藏关注本站 。

    推荐阅读