gpt4 book ai didi

c++ - 如何以不同方式访问字符数组

转载 作者:行者123 更新时间:2023-11-28 06:08:44 25 4
gpt4 key购买 nike

我有一个函数使用指针算法打印出 char* 中的所有字符:

void printCharArray(char* c,int n)
{
for (char*p=c+n-1; n; n--)
cout << *p--;
}

上面的代码有效,但我想尝试另一种无效的方法:

void printCharArray(char* c,int n)
{
char *p = &c [n - 1];
for (int i = 0; i < n; i++)
cout << *--p;
}

奇怪的是,如果我将 char *p = &c [n - 1]; 更改为 char *p = &c [n]; 那么它可以工作但是我希望 &c [n - 1] 等于 char 数组中的最后一个字符而不是 &c[n]?

最佳答案

--p; 等价于p = p - 1; p;
p--; 等同于 auto tmp = p; p = p - 1; tmp

换句话说

void printCharArray(char* c,int n)
{
for (char*p=c+n-1; n; n--)
cout << *p--;
}

这将显示 *p, *(p - 1), ..., *(p - n)

void printCharArray(char* c,int n)
{
char *p = &c [n - 1];
for (int i = 0; i < n; i++)
cout << *--p;
}

这将显示 *(p - 1), *(p - 2), ..., *(p - (n+1) )

关于c++ - 如何以不同方式访问字符数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31772383/

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