Chinaunix首页 | 论坛 | 博客
  • 博客访问: 453661
  • 博文数量: 78
  • 博客积分: 2307
  • 博客等级: 上尉
  • 技术积分: 920
  • 用 户 组: 普通用户
  • 注册时间: 2011-06-04 00:31
个人简介

IT老鸟,信息安全硕士。

文章分类
文章存档

2017年(2)

2012年(21)

2011年(55)

分类: C/C++

2011-10-22 15:21:31

指针也是值传递.这样才能改值.

#include "process.h"
#include "string.h"
#include "stdlib.h"
void testmemory(char **ptr){
     *ptr=(char*)malloc(sizeof(char)*256);
  printf("strlen(ptr)=%d\n",strlen(*ptr));
     //return ptr;
}
int main(int argc, char* argv[])
{
 char* ptr1;
    char a[100];
    testmemory(&ptr1);
    printf("strlen(ptr1)=%d\n",strlen(ptr1));

free(ptr1);

    system("PAUSE");
 return 0;
}

阅读(3316) | 评论(13) | 转发(0) |
给主人留下些什么吧!~~

blacksapper2011-10-25 13:16:22

whyliyi: 这样可以吗???testmemory中申请的指向*ptr的空间应该在栈空间,而你testmemory返回后,栈空间理应销毁的,这样mian函数能打印出正确的值么?.....
这个是引用传递不是值传递。销毁就不知道了。
这样用确实不会被销毁。
引用传递的是修改参数本身。
另外这个len的长度是272.不是256.jiong

whyliyi2011-10-24 13:39:13

还真能运行,但是,我在VS2005上跑出来:两个printf打印输出的结果是272,不知道这是为什么。。。。

whyliyi2011-10-24 13:29:36

这样可以吗???testmemory中申请的指向*ptr的空间应该在栈空间,而你testmemory返回后,栈空间理应销毁的,这样mian函数能打印出正确的值么?