简介
指针提供了对内存的直接访问,通过使用指针,我们可以访问和操作内存中变量和数组的值和地址。在本实验中,我们将构建一个程序,使用指针变量来反转给定的字符串。
注意:你需要自己创建文件
~/project/main.c
来练习编码,并学习如何使用 gcc 编译和运行它。
cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main
指针提供了对内存的直接访问,通过使用指针,我们可以访问和操作内存中变量和数组的值和地址。在本实验中,我们将构建一个程序,使用指针变量来反转给定的字符串。
注意:你需要自己创建文件
~/project/main.c
来练习编码,并学习如何使用 gcc 编译和运行它。
cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main
我们将从声明两个字符数组开始:一个用于存储原始字符串,另一个用于存储反转后的字符串。
char str[100];
char rev[100];
现在,我们将声明两个指针变量:一个指向字符串 str
的第一个元素,另一个指向反转字符串 rev
的第一个元素。
char *sptr = str;
char *rptr = rev;
我们将使用 scanf
函数要求用户输入一个他们想要反转的字符串:
printf("Enter a string: ");
scanf("%s", str);
我们需要找到字符串的末尾,以便可以从后向前遍历它。我们将使用一个 while
循环来递增 sptr
,直到它指向字符串末尾的空字符(null character)。
while(*sptr)
{
sptr++;
}
现在,我们将使用一个 while
循环来从后向前遍历字符串 str
。我们将递减 sptr
,从空字符移动到字符串的最后一个字符,并使用 *
操作符将每个元素的值存储到反转字符串 rev
中。
while(sptr >= str)
{
*rptr = *sptr;
rptr++;
sptr--;
}
反转字符串的末尾已经到达。我们必须在反转字符串的末尾添加空字符:
*rptr = '\0';
现在,我们将反转字符串复制到原始字符串中。
strcpy(str, rev);
最后,我们将打印出反转后的字符串。
printf("Reversed string: %s\n", str);
在本实验中,我们学习了如何使用指针变量来反转给定的字符串。指针提供了对内存的直接访问,通过使用它们,我们可以访问和操作内存中变量和数组的值和地址。我们使用了一个 while
循环来从后向前遍历字符串,将反转后的字符串存储在一个新的字符数组中,并在反转字符串的末尾添加了一个空字符。最后,我们将反转后的字符串复制到原始字符串中并打印出来。