字符串常量与字符数组区别

字符串常量

存储在静态常量区,静态常量区的数据只能被访问、不能被修改

字符串数组

数组存放在堆栈区,堆栈区的数据可以被修改

代码:

#include<iostream>
using namespace std;
void main()
{
    //str++ 不能++,数组名为指针常量没有指针p++的功能
    char str[]="Hello";
    char *p="Hello";
    //&p保存的是字符串常量的地址  p为H的地址
    //&str为数组的地址,str为数组首元素的地址 二值一样
    //p++可以,因为表示一个指针指向了字符串
}

这里写图片描述

#include<iostream>
using namespace std;
void main()
{
    //字符指针
    char *str="hello"+1; //"hello"---->当成字符指针 p+1
    char str1= *"hello";//*p
    char str2="hello"[3];//p[3]
}

将10进制的数转化成16进制

#include<iostream>
using namespace std;
char * Convert(unsigned long val);
void main()
{
    unsigned long s=435;
    char *str = Convert(s);
    cout<<str<<endl;
}
char* Convert(unsigned long val)
{
    //让buffer的生存作用域变长
    static char buffer[sizeof(unsigned long)*2+1];
    int mod ;
    for(int i=sizeof(unsigned long)*2-1;i>=0;i--)
    {
        //利用字符指针"0123456789"===>p p[3]
        buffer[i]= "0123456789ABCDEF"[val%16];
        /*
        mod = val%16;
        if(mod>10)
            buffer[i]=(mod-10)+'A';
        else
            buffer[i]=mod+'0';  */
        val /=16;

    }
    return buffer;
}
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值