c语言方法返回数组
更新时间:2024-12-22本文目录
- 《C专家编程》:函数如何返回一个数组?
- 怎么在函数里return一个数组?
- C语言中返回数组元素个数?
- c语言中函数返回值可以是数组、字符串和结构体吗?
- c语言函数怎么传入数组?
- c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊?
- c++学习笔记之函数如何返回字符串(char型)?
《C专家编程》:函数如何返回一个数组?
下面几种函数的写法都是等价的:
加不加*号,加多少*号,都是一样的。
《C专家编程》里说:这是一个在ANSI C中流行的不良方法,即调用函数和通过指针调用函数(或任意层次的指针间接引用)使用同一种语法。至于数组,也有对应的方法。这种做法进一步恶化了本来就有缺陷的“声明与使用相似”的设计哲学。
怎么在函数里return一个数组?
怎么在函数里return一个数组?
首先声明一个函数,如下所述。
char* get_array();
然后写函数主体,先声明要返回的数组char tmp_array[10],给该数组赋值后,在函数最后加上如下语句。
return tmp_array;
就return了一个数组。
C语言中返回数组元素个数?
C语言中返回数组元素个数?
sizeof(a)的值是在编译时刻确定的,所以如果你在程序里面这样来做:
int a[] = {1, 2, 3, 4, 5};
int len = sizeof(a)/sizeof(a[0]);
那么没有问题,可以正确的得出数组的长度,因为这个时候在编译时刻可以很容易的知道a有5个元素。
但是你把int a[]作为参数传递到函数里面,编译时刻无法得知你要传送什么样的参数进去,所以这个时候实际上是把a当作一个int 指针处理的,那么sizeof(a)实际上是指针的大小,这个在32位系统上是4,而a[0]是一个整数,sizeof(a[0])在32位系统上的的大小也是4,所以就是1了。
c语言中函数返回值可以是数组、字符串和结构体吗?
c语言中函数返回值可以是数组、字符串和结构体吗?
不可以。
因为在C语言中函数不能返回数组,但字符串是存储在字符数组中的,所以能C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式: 函数形参带进来的地址 静态局部变量地址 局部变量地址,必须在函数中用malloc()函数进行地址分配 采用全局变量地址 参考代码: void func1( char *s)
c语言函数怎么传入数组?
c语言函数怎么传入数组?
传入数组地址。
在函数的参数部分传入数组的地址,新建一个数组,int abc[10] ={1,2,3,4,5,6,7,8,9,10};有函数int adddata(int *buf){int a = 3;return a+buf[2];}将数组的地址传入函数。
这时只要将数组的地址abc传入函数即可运用数组的数据,int b =adddata(abc);函数的返回值就是3+2=5,即b=5。
c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊?
c语言中调用函数的返回值,如果是数组,主函数要输出这个数组怎么实现啊?
一般用函数的参数传递。如果要通过函数返回值传递,可以用指针,另外保存数据的变量退出函数时不得消失。例如:
#include<stdio.h>int*fun(intn){inti;staticinta[100]
;//这里用staticfor(i=0;i<n;i++)a[i]=i;return&a[0];
}voidmain(){inti,n=5;int*p;//声明指针p=fun(n)
;//返回指针for(i=0;i<n;i++)printf("%d",p[i])
;//把p看成数组来输出}得01234
c++学习笔记之函数如何返回字符串(char型)?
c++学习笔记之函数如何返回字符串(char型)?
要字符串第字符址返相于返整字符串我知道char数组名字字符串第字符址char*p=\study\*/#include<iostreamusingnamespacestd;char*get(char*str);//字符串第字符址返相于返整字符串所返值指针保存数组第字符址intmain(){charc[10];char*ch;cout<<\请输入您名字\;cinc;ch=get(c);//数组cout<<\您名字\<<ch<<endl;delete[]ch;//由于ch指向函数p,删除数组能忘记写[],否则删除首址ch=get(\Jack\);//\Jack\"未命名字符串cout<<\"您名字\"<<ch<<endl;delete[]ch;//由于ch指向函数p,删除数组能忘记写[],否则删除首址char*ch1=\"Mike\";ch=get(ch1);//\"ch1\"未命名字符串cout<<\"您名字\"<<ch<<endl;delete[]ch;//由于ch指向函数p,删除数组能忘记写[],否则删除首址
"