• 【指针与数组区别】ch[]与*ch (转载)


    【指针与数组区别】ch[]与*ch??RT,这两个有的时候可以替换。但是存字符串时却不完全相同。char ch1[]="我爱你";char *ch2="我爱你";cout<<sizeof(ch1)<<endl;//结果7cout<<sizeof(ch2)<<endl;//结果4我知道第二个是首地址,但第一个是什么,不懂啊,不是首地址吗?
    ----------------
    如鹏站内搜索“指针 数组 区别”
    http://so.rupeng.com/?keyword=%E6%8C%87%E9%92%88+%E6%95%B0%E7%BB%84+%E5%8C%BA%E5%88%AB

    如下文章供参考:
    1、数组与指针---都是"退化"惹的祸【转载】
    2、char *与char[ ]的一点疑问
    3、看"char *与char[ ]的一点疑问"得到的一些结论
    4、Sizeof与Strlen的区别
    5、C/C++数组名与指针区别深入探索
    回答:
    5. 指针变量的sizeof

      学过数据结构的你应该知道指针是一个很重要的概念,它记录了另一个对象的地址。既然是来存放地址的,那么它当然等于计算机内部地址总线的宽度。所以在32位计算机中,一个指针变量的返回值必定是4(注意结果是以字节为单位),可以预计,在将来的64位系统中指针变量的sizeof结果为8。

      char* pc = "abc";

      int* pi;

      string* ps;

      char** ppc = &pc;

      void (*pf)();// 函数指针

      sizeof( pc ); // 结果为4

      sizeof( pi ); // 结果为4

      sizeof( ps ); // 结果为4

      sizeof( ppc ); // 结果为4

      sizeof( pf );// 结果为4

      指针变量的sizeof值与指针所指的对象没有任何关系,正是由于所有的指针变量所占内存大小相等,所以MFC消息处理函数使用两个参数WPARAM、LPARAM就能传递各种复杂的消息结构(使用指向结构体的指针)。

      6. 数组的sizeof

      数组的sizeof值等于数组所占用的内存字节数,如:

      char a1[] = "abc";

      int a2[3];

      sizeof( a1 ); // 结果为4,字符 末尾还存在一个NULL终止符

      sizeof( a2 ); // 结果为3*4=12(依赖于int)

      一些朋友刚开始时把sizeof当作了求数组元素的个数,现在,你应该知道这是不对的,那么应该怎么求数组元素的个数呢Easy,通常有下面两种写法:

      int c1 = sizeof( a1 ) / sizeof( char ); // 总长度/单个元素的长度

      int c2 = sizeof( a1 ) / sizeof( a1[0] ); // 总长度/第一个元素的长度

      写到这里,提一问,下面的c3,c4值应该是多少呢

      void foo3(char a3[3])

      {

      int c3 = sizeof( a3 ); // c3 ==

      }

      void foo4(char a4[])

      {

      int c4 = sizeof( a4 ); // c4 ==

      }

      也许当你试图回答c4的值时已经意识到c3答错了,是的,c3!=3。这里函数参数a3已不再是数组类型,而是蜕变成指针,相当于char* a3,为什么仔细想想就不难明白,我们调用函数foo1时,程序会在栈上分配一个大小为3的数组吗不会!数组是“传址”的,调用者只需将实参的地址传递过去,所以a3自然为指针类型(char*),c3的值也就为4。
    源自百科


    本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/helihui123/archive/2009/10/24/4722036.aspx

  • 相关阅读:
    C#入门经典中的SelectionFont属性为null
    C#键盘事件处理
    C# TextBox中的Validating与Validated事件[转]
    System.Diagnostics.Process 执行.EXE
    USB HID usage table
    ADPCM编码和解码
    Load$$ execution region symbols
    Astyle编程语言格式化工具的说明
    RLE行程长度编码压缩算法
    Django文档阅读之执行原始SQL查询
  • 原文地址:https://www.cnblogs.com/wintergrass/p/2017612.html
Copyright © 2020-2023  润新知