如何在不为其分配内存的情况下初始化指针?!
我看到了这样的代码。 我尝试了以下示例,发现它有效,但据我所知,它不应该有效。 如何在不为其分配内存的情况下初始化指针?!
代码示例:
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;
它会打印出整个字符串和正确的数字。
如何?
你的假设是有缺陷的。以下是完全合法的:
#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"
}
指针不必指向唯一分配。