zoukankan      html  css  js  c++  java
  • c++的char []和char *的区别

    #include<iostream>

    using namespace std;

    int main() {

      char *p1 = "abcd";

      char p2[] = "1234";

      return 0;

    }

    这二者的区别还在于:
    1. p1是一个指针变量,有一块内存存储它,它的内容是字符串的地址,那么我们要访问字符串就先要取出p1中存储的地址,然后计算偏移量,进行访问
    2. 不同于p1,p2直接是字符串的地址,可直接访问

    “abcd”在常量区分配了内存存储,栈上分配一地址给p1并指向“abcd”,那么如果在后面的代码中改变了“abcd”,自然崩溃。所以,需要加上const限定。

    但是说到底,为什么改变p1就是危险的,字符数组的内容就能随意改变呢?这是因为“abcd”是在编译时刻就确定的,而“1234”是在运行时刻赋值的。所以,编译器在编译时就已经知道p1指向的是常量,他并不希望你改变,但是数组不同,可以说他只是个存储的工具,编译器编译时并不知道它里面是什么。

    但在往后的存取中,在栈上的数组比指针所指向的字符串是要快的。

  • 相关阅读:
    清除富文本样式
    jquery--cookie应用
    Log4j 配置详解
    判断请求是否为ajax
    日期工具类
    Windows Server2012 KB2919355 补丁无法安装
    安装系统步骤:
    大白菜u盘启动盘制作工具取消赞助商方法详解
    视频使用教程
    检查网络是否正常的几种命令
  • 原文地址:https://www.cnblogs.com/yangxingsha/p/11533336.html
Copyright © 2011-2022 走看看