字符指针 char *p="abc" 与 char p[]="abc"的区别

本文解析了C++中字符串常量和字符数组在内存中的不同存储位置及其意义,通过实例展示了指针与数组在处理字符串时的区别,并强调了使用const的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#include <iostream>

using namespace std;

int main()

{

   

    char *a1 = "abc";

    char *a2 = "abc";  

    const  char *a3 = "abc";

    const  char *a4 = "abc";     //  "abc" 被存储在静态数据区,是全局的  a1,a2,a3,a4仅仅只是一个指针,指向这个区域

                             //因为"abc"是常量,所以不能有a1[0]='s' 这样的修改,一般写成const  char *a4 = "abc";会好一点,

                             //这样有修改的尝试时 编译器会报错

   

    char b1[] = "abc";           

    char b2[] = "abc";

    const char b3[] = "abc";

    const char b4[] = "abc";    //以 char  b[]="adf"  这个"abf"地址是分配在栈上  而不是常量

                                //const char b4[] = "abc"; const只是用来修饰这个变量是不可         以修改的 而不是说这是一个常量

   

    printf("%d %d %s\n", &a1, a1, a1);

    printf("%d %d %s\n", &a2, a2, a2);

    printf("%d %d %s\n", &a3, a3, a3);

    printf("%d %d %s\n", &a4, a4, a4);

 

    printf("%d %d %s\n", &b1, b1, b1);

    printf("%d %d %s\n", &b2, b2, b2);

    printf("%d %d %s\n", &b3, b3, b3);

    printf("%d %d %s\n", &b4, b4, b4);

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值