Halo
发布于 2022-06-15 / 99 阅读 / 0 评论 / 0 点赞

char* 和char[] 区别

char* p

在常量区分配了内存存储,栈上分配一地址给指针p并指向常量

char array[]

array 表示的是一个char类型的数组指针,该指针所指向的数组内容是保存在栈上面的,是可以修改的

#include <iostream>
#include <sstream>
using std::string;
using std::stringstream;

char* reverse_string(char *s, int size)
{
    char *p = s;
    for (int i = 0; i < size; i++)
        p++;
    if (p != s)
    {
        for (char *q = s; q < p--; q++)
        {
            char c = *q;
            *q = *p;
            *p = c;
        }
    }

    return s;
}

int main()
{
    char *p1 = "abcd";
    char p2[] = "1234";
    // reverse_string(p1, strlen(p1));  // 报错
    // std::cout << p1;

    reverse_string(p2, strlen(p2));
    std::cout << p2;
    return 0;
}

评论