gpt4 book ai didi

c++ - 指针变量名返回的值是多少?

转载 作者:行者123 更新时间:2023-11-28 02:13:53 24 4
gpt4 key购买 nike

我不明白为什么以下代码分别产生以下输出:

char c[ 5 ] = { 'H', 'e', 'l', 'l', 'o' };
char* pc = c;
std::cout << pc;

Output

我需要理解这一点,因为我正在做一个练习,我需要通过一个指向数组的指针找到数组的索引。在网上,我找到了一个类似下面的代码,但我不明白它的结果,虽然它解决了我的问题,但我相信如果我理解上面的代码我就能理解这个:

char c[ 5 ] = { 'H', 'e', 'l', 'l', 'o' };
char* pc = &c[2];
int index = pc - c;
std::cout << index; // 2

最佳答案

您的字符串不是空终止的,所以 <<不断输出超过 "Hello" 的字符直到找到 '\0'在内存中进一步甚至崩溃。试试这个:

char c[6] = { 'H', 'e', 'l', 'l', 'o', '\0' };
char* pc = c;
std::cout << pc;

或者,作为@n.m。建议:

char c[] = "Hello";
char* pc = c;
std::cout << pc;

I believe that if I understand the above code I could understand this:

char c[ 5 ] = { 'H', 'e', 'l', 'l', 'o' };
char* pc = &c[2];
int index = pc - c;
std::cout << index; // 2

在这里,pcchar指向内存地址 2 x char 的指针高于 c .减去这 2 个指针得到 2。

正在做 std::cout << pc;std::cout << c + 2 ; (与 c[6] )

会给出:llo作为输出。

关于c++ - 指针变量名返回的值是多少?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696929/

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