| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 906 人关注过本帖
标题:请解释原因!
只看楼主 加入收藏
mashrb
Rank: 2
等 级:论坛游民
帖 子:47
专家分:29
注 册:2010-6-30
收藏
得分:0 
请do8do8do8帮我分析一下,下面的返回的是不是局部变量的指针?有劳!

#include "stdio.h"
char *iint(char *);
char *iint(char *k)
{  

  char *pa=malloc(sizeof(k));
  strcat(pa,k);
  return pa;

}
int main()
{  

   char *n="abc";
   char *ipa=iint(n);
   printf("num=%s\n\n",ipa);
   printf("num=%s\n\n",ipa);
   system("pause");
}




2010-07-17 22:35
do8do8do8
Rank: 10Rank: 10Rank: 10
来 自:沙滩
等 级:贵宾
威 望:17
帖 子:366
专家分:1845
注 册:2010-7-2
收藏
得分:10 
回复 11楼 mashrb
局部变量是被释放的 释放的是变量 而不是释放它指向的对象:
有如下可以做为返回指针:
1。声明为静态数组
2。参数数组  数组是要明确大小的。
3。用malloc申请的指针
以上三个的内存不会随着局部变量的释放而释放 还是可以访问的
请参考 函数调用的机制

http://book.

[ 本帖最后由 do8do8do8 于 2010-7-18 00:23 编辑 ]

学C语言从底层开始,学编程从问题开始,一日学会C!!!
2010-07-18 00:15
zisefengye
Rank: 5Rank: 5
等 级:职业侠客
帖 子:167
专家分:386
注 册:2010-6-27
收藏
得分:0 
return &a;返回的是变量a的内存地址,相当于:int a = 50; int *pa = &a;所有一般类型都是在栈上分配的,由系统自己回收资源,而指针是在堆上分配,需要程序员自己动手释放。别名是这样一回事: int a = 10; int &b = a;那么b就是a的别名,使用b就是使用a,可以理解为a即b,b即a。
2010-07-18 13:15
快速回复:请解释原因!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.014186 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved