返回首页
当前位置: 主页 > 编程语言 > C/C++教程 >

char *p="123"与char p[]="123"的区别

时间:2015-06-25 16:16来源:电脑教程学习网 www.etwiki.cn 编辑:admin

char *p = "123";       p可以理解成一个const char* ,"123"是在overlap数据段中,内容不能修改  
char p[] = "123";      p是一个char*, 一般被编译器放置在普通的数据段中  


char *p = "123";        初始化指针,p 的初始值由存放"123"的首地址决定,p可以理解成一个const char*
char   p[] = "123";     初始化指针与数据内容,p的值是分配的,相当于先char p[]; 然后strcpy(p,"123");

 

#include <cstring>
#include <iostream>

int main()
{
    char *p1 = "abcdef";
    char p2[] = "abcdef";

    std::cout << sizeof(p1)/sizeof(char) <<std::endl;
    std::cout << sizeof(p2)/sizeof(char) <<std::endl;

    //*p1 = 'g';   //运行时出错,因为是“const char *”,内容不可变
    ++p1;          //指针本身可变
     std::cout << p1[0] << std::endl;
     std::cout << p1 <<std::endl;

   return 0;
}

运行结果:

4           //p是指针

7           //p是数组,别忘了末尾自动加的 '\0'

b           //const char * 指针可变,内容不可变

bcdef

------分隔线----------------------------
标签(Tag):C语言
------分隔线----------------------------
推荐内容
猜你感兴趣