带有字符串的初始字符指针

问题描述 投票:0回答:1

如何在不为其分配内存的情况下初始化指针?!

我看到了这样的代码。 我尝试了以下示例,发现它有效,但据我所知,它不应该有效。 如何在不为其分配内存的情况下初始化指针?!

代码示例:

typedef struct{
    char* c;
    int b;
}st;

#include <iostream>

int main()
{
    std::cout<<"Hello World";

st a={
    (char*)"qwertyuioplkjhgfdsazxccvbm",   3
};

    std::cout<<"Hello"<<std::endl<<sizeof(st)<<"   "<<sizeof(a)<<"   "<<sizeof(int)<<"   "<<sizeof(char*)<<std::endl;

std::cout<<a.c<<a.b<<std::endl;

它会打印出整个字符串和正确的数字。

如何?

c++ string struct
1个回答
0
投票

你的假设是有缺陷的。以下是完全合法的:

#include <iostream>
int main() {
   const char* p0 = "asd"; // Memory is allocated for "asd", p0 points to that
   const char* p1 = p0; // Points to same memory
   auto p2 = p1; // Also points to the same memory
   std::cout << p2; // Prints "asd"
}

指针不必指向唯一分配。

© www.soinside.com 2019 - 2024. All rights reserved.