gpt4 book ai didi

c++ - 返回 C 中的基地址(指针)

转载 作者:行者123 更新时间:2023-11-30 02:34:48 25 4
gpt4 key购买 nike

我正在学习指针并尝试了以下程序

#include <iostream>
#include <cstdlib>
#include <cstdio>
using namespace std;
char* getword()
{
char*temp=(char*)malloc(sizeof(char)*10);
cin>>temp;
return temp;
}
int main()
{
char *a;
a=getword();
cout<<a;
return 0;
}

以我的理解水平,a 是一个指向字符的指针,在函数 getword() 中我返回了 temp 我想想基地 &temp[0]。我以为输出将是我输入的字符串的第一个字符,但我在 stdout 中得到了整个字符串。这是如何工作的?

最佳答案

在 C 的传统中,一个 char*代表一个字符串。实际上,您程序中的任何字符串文字(例如 "hello" )都将具有 const char * 的类型.

因此,cout::operator<<( const char * )作为字符串输出实现。它将从给定的地址开始输出字符,直到遇到字符串终止符(也称为空终止符或 '\0' )。

如果你想输出单个字符,你需要将指针解引用到一个char中。类型。您可以选择以下语法之一:

cout << *a;    // Dereference the pointer
cout << a[0]; // Use array index of zero to return the value at that address

请注意,您提供的代码不太符合 C++ 风格。对于初学者,我们通常不使用 malloc在 C++ 中。然后您通过不调用 free 来泄漏内存之后。内存未初始化并依赖于 cin成功(可能并非如此)。此外,在出现未定义行为之前,您最多只能处理 9 个字符的输入字符串。

也许您应该了解 <string> 库并开始使用它。

关于c++ - 返回 C 中的基地址(指针),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34304421/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com