如何以不同方式访问字符数组
How to access array of characters in different ways
我有一个函数使用指针算法打印出 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))
我有一个函数使用指针算法打印出 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))