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

发布时间:2011-08-29 共3页

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

  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的值,即,静态区内存和堆区去内存的地址都是可以返回的。

  编辑特别推荐:

  类成员函数的重载、覆盖和隐藏的区别

  用C写最简单的Windows窗口程序:WINAPIHelloWorld

  高质量程序设计指南:strcpy的实现

  重解几道华为经典C语言面试题

  应该怎样学习C语言?

百分百考试网 考试宝典

立即免费试用