char a[]与char *的一些补充实验

#include<iostream>
#include<string.h>
using namespace std;
int main(void)
{
    char a[] ="hello";    //位于栈中,可以修改,不过因为stack分配好了,后面如果加上其他字符串最后会发生stack corrupted(堆栈损坏,分配不够)
    //char a[20]="hello";   //分配好大小,堆栈足够大的话可以避免堆栈崩溃(此情况在vs2012和g++中都有出现)
    a[0] = 'X';    //修改

    char *p="world";   //注意p指向的是常量字符串,位于静态存储区,不能修改。
    //const char* p="world";  //p为指向常量的指针
    //p[0]='X';        //编译通过,运行崩溃
    //strcpy(a,p);

    strcat(a,p); //这里在不同平台有差异:1、在vs2012中,*p为const和非const都能编译通过
                //                         2、在g++中,*p要为const常量才能编译通过
                //                         3、相同点都是把字符串p接在a[]后会出现运行崩溃,就是前面说的栈分配不够
    //char b[]="world";        //b只是拿来控制变量对比的哈哈
    //strcat(a,b);
    //strcpy(p,a);
    cout<< a<<endl;
    //cout<<p<<endl;
    
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值