这个是将字符串数组进行倒序输出的三段代码,其中第三段代码为网上摘抄的,但是原文用的是静态数组,自己改为了使用动态数组,然后稍作更改有了第一段代码,所以第一段代码跟第三段差不多,第二段也差不多就是了,这个案例让我对指针以及动态数组有了更深的理解。
关于指针的含义我是向这篇文章学习的,非常感谢!!
C语言中指针p、p以及&p之间的区别以及p和**p的区别
1.第一个
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;//输入字符串的长度
//创建两个动态数组
char *str=(char *)calloc(n+1,sizeof(char)); //接收输入的字符串,多申请的一位初始化为'/0'
char *str1=(char *)calloc(n+1,sizeof(char)); //输出
puts("请输入你要输出的字符串:");
gets(str);
str1=str1+n-1;
for(;*str!='\0';str++,str1--){
*str1=*str;
}
printf("倒序后的结果为:%s",str1);
free(str); //释放动态数组的空间
free(str1);
}
第二个
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;//输入字符串的长度
//创建两个动态数组
char *str=(char *)calloc(n+1,sizeof(char)); //接收输入的字符串,多申请的一位初始化为'/0'
char *str1=(char *)calloc(n+1,sizeof(char)); //输出
puts("请输入你要输出的字符串:");
gets(str);
str1=str1+n-1;
for(int i=0;i<n;i++){
str1[len-i-1]=str[i]; //用比较熟悉的数组形式进行数据赋值
}
printf("倒序后的结果为:%s",str1);
free(str); //释放动态数组的空间
free(str1);
}
第三个
#include <stdio.h>
#include <stdlib.h>
int main()
{
int n;//输入字符串的长度
//创建两个动态数组
char *str=(char *)calloc(n+1,sizeof(char)); //接收输入的字符串,多申请的一位初始化为'/0'
char *str1=(char *)calloc(n+1,sizeof(char)); //输出
puts("请输入你要输出的字符串:");
gets(str);
str1=str1+n-1;
char *p1=str;
char *p2=str1;
printf("p1的长度为:%d \n",strlen(str));
p2=p2+strlen(str)-1;
for(;*p1!='\0';p1++,p2--){
*p2=*p1;
}
*p2='\0';
printf("倒序后的结果为:%s",str1);
free(str); //释放动态数组的空间
free(str1);
}