c语言函数返回数组指针的函数指针
❶ (c语言)返回指向数组的指针的函数
第二种方法是因为类型不匹配(double*与(double(*)[ROW])产生错误,而且
((double (*)[row])matrix);
里的[row]是一个变量,而指向数组的指针
double (*matrix)[ROW]里的ROW只能使用常量,所以这里也有一个错误。
由于指向数组的指针指向的数组长度(即第一维)必须是确定的常量,所以你这种行列皆不确定的数组不能用这种形式返回。
我觉得用第一种形式好一点,访问二维数组a[i][j]可以转换成访问一维数组a[i*row+j];//row是列数
如果非要返回二维数组的话,我想用指针数组会好一点,不过分配空间的时候就麻烦一点。
❷ c语言函数返回数组
在C语言中,无法直接返回一个数组,但是可以通过返回对应类型指针的方式,返回数组。
在大多数情况下,一维数组和一维指针是可以通用的。
比如,定义一个函数,申请一定长度的整型动态数组,其长度用参数传入,并将结果返回。如出错,返回空指针NULL。 代码可以写成如下形式:
int*int_array_create(intn)//参数n为数组元素个数
{
int*r;
if(n<=0)returnNULL;//参数错误
r=(int*)malloc(sizeof(int)*n);//申请内存空间,大小为n个int长度。
returnr;//返回得到的整型数组的指针。
}
❸ C语言 通过指针从函数返回一个数组,编一道简单的程序解释
通过指针从函数返回一个数组
换句话说,返回的并不是数组,而是数组的首地址!
#include<stdio.h>
int*fun()//返回类型int*,与returna中的a的类型相同才可以!
{
staticinta[]={1,2,3};//静态变量,函数结束后,不会被系统回收
returna;//返回数组名,即数组首地址
}
intmain()
{
int*p=fun();//定义整型指针p接收返回地址
inti;
for(i=0;i<3;i++)//遍历返回的地址中的数据!
printf("%d",p[i]);
printf(" ");
return0;
}
❹ C语言怎么让“函数”返回“指针数组”
你好
从问题来看,似乎你对于指针的概念没太理解。指针变量中存储的是内存中的地址,而实际的数据放在这个地址中。
按照这段代码来说,int* 声明的指针指向内存中的一块地址,而在这块地址中存储着一个整形数值。所以要返回这样的值,也就相当于是返回一个内存地址。因此,在程序中有两种具体的解决办法:
1.在调用函数的时候,直接将变量的指针(即内存地址)作为参数传入,在函数执行的时候,就会自动对内存中相应地址的数据进行操作。使用这种方法也就不需要返回值了。具体到这段代码中,就是在Main中声明int* tempA[10],把foo函数声明为void foo(int* a[10]),调用时用foo(tempA),在foo函数中直接使用a[10]即可。
2.直接把内存地址作为返回值,因为在C中,数组名就是数组首元素的指针,因此直接返回数组名就可以了,即return a即可。如果是普通变量,要用取内存地址的运算符&,比如声明了整型变量 int i,就可以return &i。这与printf函数中的使用方法是相通的。
【按照补充的内容:】
a-------->a1-------->i1
|-------->a2-------->i2
|……………………
|-------->an-------->im
这样的调用方法,只能保证a1-an不被修改,怎么保证i1-im不被修改?
希望以上回答能帮到你。【PS.很久没用C了,如果哪里出了差错,请指正。】
❺ C语言中,怎样定义函数可以让函数返回一个指针数组
返回它的地址不就行了么,指针数组的首地址就可以了
比如
有一个指针数组
char
*p[10]
=
{这里面放的都是指针},那么p的类型就是char
**类型
你定义一个函数,返回char
**类型就行了
比如
char
**fun()
{
char
**s;
return
s;
}
❻ c语言中 如果想让一个函数返回数组指针,函数返回类型应该怎么定义
int(*fun())[10];
fun是一个返回数组指针int(*)[10]的函数
❼ C语言怎么让“函数”返回“指针数组”
首先,你不应该返回局部变量的指针,因为局部变量在离开函数后就会被销毁。如果你想这样返回一个数组的话,你应该malloc出一个数组来返回。
至于应该return什么,return
(malloc出来的那个指针)就可以了。
例如
int**
foo()
{
int
**p
=
(int
**)malloc(sizeof(int
*)*10);
...
...
...
return
p;
}
这个p指向一个内存段,这个内存段存有十个int*类型的元素。
❽ c语言,函数返回数组指针出错为什么啊
C语言里不可以返回数组,只能返回指针
函数内的数组是局部变量,离开函数后就会离开了其作用域,原则上讲就会被销毁(实际是编译器及编译器选项而定),自然不能被回传
❾ 用C语言如何使函数返回值为指向一维数组的指针
这个问题一个较为妥善的方法是把数组定义在主函数,再传入数组地址给自定义函数,如果你非要在自定义函数里定义也行,至于是否需要设置为static,那得看情况,因为函数退出时栈空间并不是马上被刷新,如果你能保证该栈空间在你访问前没被释放就没必要定义为static,但是保险起见定义static更好,因为你可能不知道到底该内存是不是被重新写入了数据,至于你说要返回指向指针的指针,我举个例子,int**
fun(),这个就是返回一个指向指针的指针,其指向的指针指向int型,呵呵,明白了没
❿ c语言 函数返回数组指针
由于你在子函数int *shuzu(void)中定义的数组 a[4];属于局部变量,在子函数结束时会被释放,所以返回的指针变成野指针,会乱码;简单的解决方法有两种,1. 将数组定义在主函数之前(#include <stdio.h>下面),那么就变成了全局变量,不会被释放了;2.使用malloc或者calloc开空间后再赋给这个数组,这样也不会被释放了;第一种方法有缺点,以后学到全局变量的时候会知道,第二种方法估计你还没学到,不过很简单,网络一下就会了~~~