c语言函数可以返回地址吗,函数可以返回地址值吗

C语言的return能返回地址值吗?

可以。返回指针实际上就是地址。

创新互联专注于英吉沙企业网站建设,响应式网站,商城网站建设。英吉沙网站建设公司,为英吉沙等地区提供建站服务。全流程定制网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务

例如:

#includestdio.h

#includestdlib.h

// 动态分配 n 个字节,返回 char *

char *f(char *name, int n){name = (char*) malloc(sizeof(char)*n);

return name;

}

// 动态分配 n 个字节,返回 void *

void *v(char *name, int n){name = (char*) malloc(sizeof(char)*n);

return name;

}

main(){ char *name;

char *p;

int *x,i;

p = f(name,50); // 给 p 分配 50个字节,等于声明了 char p[50]

scanf("%s",p); // 使用 char p[50]

printf("%s\n",p);

x = (int *) v(name,40); // 给 x 分配 40个字节,(并强制转换)等于声明了 int x[10];for (i=0;i10;i++) x[i]=i+1; //使用 int x[10];

for (i=0;i10;i++) printf("%d ",x[i]);

}

c语言函数返回地址

1、函数直接返回一个指针类型即返回地址。

2、C语言属于高级编程语言。在C语言中一个函数不能返回局部地址即指针。

例:

int * func(void)

int a= 10;

int *p = a;

return p;

a变量的区域是func()函数,在函数内有效,出了函数就释放了,此时p指向的是一个未知

地址,属于错误用法。

正确用法:

int *p = NULL;

int * func(void)

p = malloc(sizeof(int));

if(p!=NULL)

{

*p = 10;

}

return p;

C语言函数不能返回局部变量或者形参的地址?为什么

我给你从编译器角度考虑下吧!1、首先局部变量的使用范围只有在这个局部范围类有效。2、函数是模块化的思想。比如你有一个判断一个数是否是素数的函数。那么你再求100以内所有素数和的时候,main中会调用这个函数100次。这些函数编译器在处理的时候都是放在一个堆栈的。而且每个函数都占有不同的地址和空间。(递归函数尤为明显)。最关键的是,当函数返回函数值后,函数的使命就结束了。所以这个函数体在呢内存中就销毁了。你即使能从函数中返回一个局部变量。你再去读这个地址的时候。东西都不在了。3、还有一点。编译器在分配函数的空间的时候,地址不是固定的。所以你每次运行程序,你会发现

int

a=3

printf(f"%d",a),不都是一样的。所以你的问题很明了了。

怎样在C语言中用函数返回一个数的地址呢?

首先函数返回一个指针类型即返回地址。

例:

int * func(void)

int a= 10;

int *p = a;

return p;


名称栏目:c语言函数可以返回地址吗,函数可以返回地址值吗
链接地址:http://ybzwz.com/article/dsedehi.html