【发布时间】:2026-02-18 20:35:01
【问题描述】:
我是 C 的新手,如果这个问题是微不足道的,请原谅我。我正在尝试反转一个字符串,在
我的情况是字母a,b,c,d。我将字符放在 char* 数组中,并声明一个缓冲区
它将以相反的顺序保存字符,d,c,b,a。我使用
指针算法,但据我了解,char* 数组中的每个元素都是 4 个字节,所以当我执行以下操作时:buffer[i] = *(char**)letters + 4; 我应该指向
数组中的第二个元素。它不是指向第二个元素,而是指向第三个元素。经过进一步检查,我发现如果我将基指针增加 2
每次我都会得到想要的结果。这是否意味着数组中的每个元素
是两个字节而不是 4?这是我的其余代码:
#include <stdio.h>
int main(void)
{
char *letters[] = {"a","b","c","d"};
char *buffer[4];
int i, add = 6;
for( i = 0 ; i < 4 ; i++ )
{
buffer[i] = *(char**)letters + add;
add -= 2;
}
printf("The alphabet: ");
for(i = 0; i < 4; i++)
{
printf("%s",letters[i]);
}
printf("\n");
printf("The alphabet in reverse: ");
for(i = 0; i < 4; i++)
{
printf("%s",buffer[i]);
}
printf("\n");
}
【问题讨论】:
标签: c