指针与数组的对比

来源:互联网 发布:儿童学围棋软件 编辑:程序博客网 时间:2024/05/01 08:38
、数组的地址与容量在生命期内保持不变,只有内容可以改变;指针可以随时指向任意类型的内存块.

    2、不能对数组名进行直接复制与比较。如不能用语句b=a,把数组a的内容复制给数组b.否则产生编译错误.

       应该用strcpy,同理比较b和a的内容是否相同,不能用if(b==a)来判断,应该用标准库函数strcmp进行

       比较.

       语句p = a 并不能把a的内容复制给指针p,而是把a的地址赋给了p。要想复制a的内容,可以先用库函数

       malloc为p申请一块容量为strlen(a) + 1 个字符的内存,再用strcpy进行字符串复制。同理,语句

       if(p==a) 比较的不是内容而是地址,应该用库函数strcmp来比较。

    3、用运算符sizeof可以计算出数组的容量(字节数)。如: char a[] = "hello world"; char *p = a;

       sizeof(a)的值是12,但sizeof(p)的值却是4。这是因为sizeof(p)得到的是一个指针变量的字节数,

       相当于sizeof(char *),而不是p所指的内存容量。C++/C语言没有办法知道指针所指的内存容量,除

       非在申请内存时记住它。

    4、如果函数的参数是一个指针,不要指望用该指针去申请动态内存。 

原创粉丝点击