
正文
c语言数组连接函数 c语言数组组合
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言数组连接问题
第一,你可以定义ZZZ[255]为一个全局变量,然后在里面赋值
byte ZZZ[256];
byte zuhe(byte a[], byte b[], byte c[], byte d[])
{
int i;
for (i=0; i128;i++)
{
zzz[i]=a[i];
}
for (i=128; i192;i++)
{
zzz[i]=b[i-128];
}
for (i=192; i224;i++)
{
zzz[i]=c[i-192];
}
for (i=224; i256;i++)
{
zzz[i]=d[i-224];
}
}
调用函数返回值,可以返回一个变量,可以返回0,和1,但不能返回的是源函数名。
相关问答
Q1: c语言编程,利用函数把字符数组b,连接到字符数组a的后面,并返回字符数组a中新的长度。
题目要连接是“字符数组”而非“字符串”。如下代码可以实现c语言数组连接函数:
//#include "stdafx.h"//If the vc++6.0, with this line.
#include "stdio.h"
int Connect_a_b(char *a,int la,const char *b,int lb){
a+=la,la+=lb;
while(*a++=*b++,lb--);
return la;
}
int main(void){
char s1[50]="Moonlight is in fr",*s2="ont of my bed.";
int i,ln=Connect_a_b(s1,18,s2,14);
for(i=0;iln;printf("%c",s1[i++]));
printf("\nNew length is %d\n",ln);
return 0;
}
Q2: c语言,连接2个数组的方法???
首先你不能直接用静态数组连接,因为你无法控制编译器如何分配内存,事实上分配在堆上c语言数组连接函数的数组是由操作系统分配的,因此你不能指望两个数组是连续排列的,所以连接数组只能重新分配一个能包容两个数组元素的新数组,并将两个数组的元素复制过去,然后释放掉原先的数组。
用动态数组实现以下核心代码:
int * Link(int *a,int lenA,int *b,int lenB) {
int *p=new[lenA+lenB];//新建一个数组,数组大小为两数组总和
int *pp=p;//运算指针
//复制数组不要自己使用循环,那样效率很低,应该采用库函数中的memcpy。
memcpy(pp,a,lenA*sizeof(int));//将数组a复制到新建内存首地址
memcpy(pp+lenA,b,lenB*sizeof(int));//将数组b复制到前数组尾部
//如果需要,释放数组a和b,当然如果是静态分配的数组,下面两句可注释掉
delete []a;
delete []b;
return p;
}
其中sizeof(int)取整型类型的字节宽度,当然你可以直接写4,但是不同编译器不同操作系统int类型的字节宽度可能不同,养成使用sizeof取类型宽度可以使你的代码具有很好的兼容性,减少意外。
复制后指向会改变,c语言数组连接函数我们还需要将p返回给调用者,因此不可以直接使用p进行复制,需要建一个指针pp,复制p的值,利用pp复制数组。
pp+lenA可以让pp指向复制后的数组a的尾部,在后面的位置复制b数组。
Q3: c语言函数怎么调用数组部分
一、数组可定义为全局变量c语言数组连接函数,函数直接调用。
二、数组可定义为局部变量c语言数组连接函数,再通过参数传递到函数中调用(实参传数组名,表示数组首地址,也可通过指针或数组名+数字来传递数组局部地址)。
三、main函数想要调用函数返回的数组,可用static定义静态变量或malloc定义动态数组(字符串常量也可返回使用,但局部变量,在函数调用结束会被释放,不能作为返回地址使用)。
下面是演示代码c语言数组连接函数:
#include stdio.h
#include string.h
#include malloc.h
char str1[]="c语言数组连接函数我是全局变量数组";
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申请的地址传值,传递内容为c语言数组连接函数:(我是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;
}
Q4: c语言把几个数组的数据连接起来
#includestdio.h
int main(){
unsigned long a[4]={0x232323, 0x232323, 0x232323, 0x232323};//字符'#'的ASCII码为0x23
char b[16];
char *p=(char *)a;
int i;
for(i=0; i16; i++){
b[i]=*(p+i);
putchar(b[i]);
}
return 0;
}
c语言数组连接函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言数组组合、c语言数组连接函数的信息别忘了在本站进行查找喔。







