【发布时间】:2020-12-16 05:55:59
【问题描述】:
Mahlzeit 社区,
我有一个新问题:D
当我想声明一个指针时,我在哪里写* 有什么不同吗?
例如
void loopsWithCStringsV2()
{
const char* str1 = "i love learning";
const char * str2 = "i love learning";
const char *str3 = "i love learning";
std::cout << "str1: " << str1 << std::endl;
std::cout << "str2: " << str2 << std::endl;
std::cout << "str3: " << str3 << std::endl;
std::cout << "&str1: " << &str1 << std::endl;
std::cout << "&str2: " << &str2 << std::endl;
std::cout << "&str3: " << &str3 << std::endl;
std::cout << "*str1: " << *str1 << std::endl;
std::cout << "*str2: " << *str2 << std::endl;
std::cout << "*str3: " << *str3 << std::endl;
}
将导致:
str1: i love learning
str2: i love learning
str3: i love learning
&str1: 006FFAA8
&str2: 006FFA9C
&str3: 006FFA90
*str1: i
*str2: i
*str3: i
享受你的一天:)
【问题讨论】:
-
没有。空格大多被忽略
-
不,它没有。正式名称为
const char *str1;,尽管多年来一直将其视为const char* str1。 -
*是一个不需要空格的标记,所以没关系。你甚至可以像const char*str4那样做可憎的事。 -
@Yksisarvinen:我有一位量化分析师坚持这样做。现在适用于模型验证。
-
两者都有好处:
*是类型的一部分,而不是名称的一部分,因此int* x;另一方面,实际上语法规则说*属于@ 987654331@ 不是int,如果你有多个一行,这很重要,因此int *x,*y;。我确定有重复...
标签: c++