*在变量名前面做什么

What does a * do in front of a variable name?

本文关键字:什么 前面 变量名      更新时间:2023-10-16

在变量名前面放一个星号(*)有什么效果,比如在下面的代码行中:char prompt = 'y'char *prompt = 'y'?`

编辑:当我最初发布这个问题时,我认为我在Netbeans中包含的Java示例程序中看到了这个带星号的变量。这是我的错误——这是Netbeans中的C++代码示例。我在一些Java文档中寻找答案,但找不到,这让我在这里提出了这个问题。最后,这是一个我当时没有意识到的棘手问题。

答案是星号与"指针"有关,这与内存寻址有关,除了我之外,任何人都可以更好地解释。而且,它们在Java语言中没有使用,但在C++中肯定是使用的。

char prompt="something"是错误的,因为char只有一个字节长,所以您只能给它分配一个字节长度的东西,比如

char prompt='y' 

更详细地"something"在c中表示为字符数组,因此编译器也会大喊您不能将const-char[10](注意长度为10,因为编译器在字符串末尾附加了一个null字符)分配给char。这就像把一桶桶的苹果放在一个苹果上,结果会是一场车祸。另一方面,char* prompt ="something"是指向字符的指针。这里的prompt指向字符串"something",您也可以像prompt[0]、prompt[1]那样对其进行索引,这将分别导致s和o。

我还假设您错误地将问题标记为java。

这意味着它是一个指针。Java中没有指针。

因此,如果您有char*str,在str中,您没有类似于"Hello World"的内容,而是字符串"Hello世界"所在的内存地址。