本文共 1203 字,大约阅读时间需要 4 分钟。
C/C++如何返回一个数组/指针
// 方法1,用静态变量进行返回 char *SubFunction(void) { static char szText[5] = "adfa"; // 用静态空间 //对p进行赋值操作 return szText; } void Caller() // 这个函数调用SubFunction { TRACE("%sn", 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就是带回的值 TRACE("%s %sn", szText1, szText2); }
方法3 通过返回传入数组的指针
#include<stdio.h>
double *copy1(double array[],double c1[],int n); double *copy2(double array[],double c2[],int n); void main(void) { int size=4; double source[4]={1,2.3,4.5,6.7}; double first_copy[4]; double second_copy[4]; double *fp,*sp; fp=copy1(source,first_copy,size); printf("The first copy: %f,%f,%f,%fn",fp[0],fp[1],fp[2],fp[3]); sp=copy2(source,second_copy,size); printf("The second copy: %f,%f,%f,%fn",sp[0],sp[1],sp[2],sp[3]); }
double *copy1(double array[],double c1[],int n) { int i; for(i=0;i<n;i++) c1[i]=array[i]; return c1; }
double *copy2(double array[],double c2[],int n) { double *p; int i; for(i=0;i<n;i++) { p=&array[i]; c2[i]=*p; } return c2; }
转载地址:http://ediwb.baihongyu.com/