c语言函数参数传回指针 c语言 指针传参

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语言 函数返回指针

首先,说一下第一个问题,第一个不交换是因为定义的k是一个指针,指针说白了就是一个指向,我指向你,他指向她,然后换成我指向她,他指向你,你把他们指向的位置交换,而并没有交换他们地址里面存储的值,这样是并没有任何区别,在最后函数结束之后,函数的那些指针指向全部释放,和修改不修改没什么两样;定义的是一个整型变量,他把s

指针指向的地址里面的值与

t

指针指向的地址的值进行了交换,这样就修改了内存里面的值,即便是函数结束了也不会释放,自然就能做到交换了。

第二个问题,存储地址是会释放,但是释放的是函数内部定义的局部变量,现在你已经把s的地址通过return

返回回来并且存在

主函数的

r

中了,所以自然就不会释放了

c语言 函数参数传递 与指针问题

这是个函数指针 前面的void为返回值类型 后面的void*为参数类型.

函数指针是可以作为某个函数的参数的.

(1) 指向函数的指针变量的一般定义形式为:

数据类型 (*指针变量名)(函数参数列表)

函数名是可以缺省的 作为参数传递的时候会去调和 void*(*)(void*)这个类型相匹配的函数的

作为参数调用这个函数的时候 返回类型是void* 就相当于传了一个参数类型为void*,当然这个函数指针的参数也是void*的

C语言怎么让一个函数返回指针

这种方式叫做“用指针函数*creat()的返回值来传递动态内存”,这是一个C语法

首先你要注意,子函数*creat()用了malloc动态申请内存,而return返回的是指针变量所指向的地址,而不是指针!相当于将你所申请的动态内存返回给主函数

int

*fun(void)//这里是指针函数

{

int

*p

=

(int

*)

malloc

(int);//动态申请内存//p在这里指向了一块合法内存的地址

return

p;

}

void

main(void)

{

int

*q

=

NULL;

q

=

fun();//fun()返回指针p所指向的地址,(指针p是在栈上创建的,所以*fun()函数运行完,指针所分配的内存被系统自动释放)这时q指向p,得到了malloc所申请到的内存

free(q);//释放动态内存

}

C语言 使用子函数的函数参数传回指针的方法

不知下列代码对你是否有用

记住:C中只有_值_传递!

#include conio.h

#include stdio.h

void fun(int **pp, int *i);

int main(void)

{

int *p, i;

i = 88;

fun(p, i);

printf("%d\n", *p);

getch();

return 0;

}

void fun(int **pp, int *i)

{

*pp = i;

}

或者

#include conio.h

#include stdio.h

#include stdlib.h

#define N 100

void getmemory(int **pp, int n);

int main(void)

{

int *p, i;

getmemory(p, N);

for (i = 0; i N; i++)

p[i] = i;

for (i = 0; i N; i++)

(i+1)%10 ? printf("%3d", p[i]) : printf("%3d\n", p[i]); /*输出0~99*/

getch();

return 0;

}

void getmemory(int **pp, int n)

{

*pp = (int *)malloc(n * sizeof(int));

}


网页名称:c语言函数参数传回指针 c语言 指针传参
标题链接:http://azwzsj.com/article/hepcic.html