zoukankan      html  css  js  c++  java
  • char *p = "abc";char p[] = "abc";两者之间的区别

    #include<iostream>
    #include<string>
    
    /*char *p = "abc";char p[] = "abc";两者之间的区别*/
    char * GetStringPoint(void)
    {
        char *p = "abcd";
        printf("%x
    ",p);
        return p;
    
    }
    
    char *GetStringArray(void)
    {
        char p[] = "abcd";
        printf("%x
    ", p);
        return p;
    }
    
    int main()
    {
        char *p;
        char *p1;
        p = GetStringPoint();
        printf("GetStringPoint:%s,%x
    ", p, &p);
        p1 = GetStringArray();
        printf("GetStringArray:%s,%x
    ", p1,&p1);
    
        return 0;
    }

    这张图的地址为:红色标记的是GetStringPoint()对应的地址的内容看到是不知道的内容,而非函数初始化给定的内容,说明函数结束后,内存已经被释放掉!

    这张图中对应的地址为:红色标记的是GetStringPoint()对应的地址的内容仍然存在,为初始赋值的字符串abcd!

    总结说明:

    char p[] = "abcd";     //用来声明一个数组p,为局部变量,存储在栈区
    char *p = "abcd";      //用来声明一个指针p,指向“abcd”字符串起始位置,“abcd”存储在静态数据区,p是局部指针变量存储在栈区,指向“abcd”的地址

  • 相关阅读:
    20180530
    vue路由配置出错,导致页面跳转会有闪屏问题
    20180528
    vuecli+ivew项目搭建
    centos6安装mysql
    华为云服务ESC
    centos6安装nginx
    国产操作系统aarch64编译filebeat
    Python常见问题
    Git
  • 原文地址:https://www.cnblogs.com/whitewn/p/6605335.html
Copyright © 2011-2022 走看看