c语言函数用指针传递参数问题
来源:优易学  2010-1-14 11:24:50   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  例子:某前辈写的,很详细~~~

  int   a = 0;   全局初始化区

  char   *p1;   全局未初始化区

  main()

  {

  int   b;   //栈

  char   s[]   =   "abc";   //栈

  char   *p2;   //栈

  char   *p3   =   "123456";   //123456\0在常量区,p3在栈上。

  static   int   c   =0;   //全局(静态)初始化区

  p1   =   (char   *)malloc(10);

  p2   =   (char   *)malloc(20);    //分配得来得10和20字节的区域就在堆区。

  strcpy(p1,   "123456");   //123456\0放在常量区,编译器可能会将它与p3所指向的"123456"优化成一个地方。

  //在strcpy执行的时候,会为生成一个p1的副本 char* _p1,在栈中

  }

  也就是说&s[0]、&b、&*p2、&*p3是不能用return来放回给调用者的,p1,p2,p3的值,即,静态区内存和堆区去内存的地址都是可以返回的。

上一页  [1] [2] [3] 

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训