一个简单的c语言问题
#include<stdio.h>#include<stdlib.h>#include<string.h>intmain(void){char*src="abcdef";...
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main(void)
{
char *src = "abcdef";
int len = strlen(src);
char *dest = (char*)malloc(len+1); //11行
char *a = &src[len-1];
char *b = dest;
int j;
j = len;
while(j--!=0)
*b++ = *a--; //17行
int i;
for(i=0;i<len;i++)
printf("%c",dest[i]);
printf("\n");
free(dest);
dest = NULL;
return 0;
}
谁能帮我解释下11行--17行这段是什么意思,为什么这么写,谢谢啦啦
详细点,一定要详细点 展开
#include<stdlib.h>
#include<string.h>
int main(void)
{
char *src = "abcdef";
int len = strlen(src);
char *dest = (char*)malloc(len+1); //11行
char *a = &src[len-1];
char *b = dest;
int j;
j = len;
while(j--!=0)
*b++ = *a--; //17行
int i;
for(i=0;i<len;i++)
printf("%c",dest[i]);
printf("\n");
free(dest);
dest = NULL;
return 0;
}
谁能帮我解释下11行--17行这段是什么意思,为什么这么写,谢谢啦啦
详细点,一定要详细点 展开
展开全部
你其实是想做字符串逆序输出对吧,
char *dest = (char*)malloc( len+1); 这句是给dest申请空间
char *a = &src[len-1]; 把src数组的最后一个地址赋值给a
char *b = dest; 把dest的第一个的地址赋值给b
int j; 用J计数循环
j = len; 循环len次
while(j--!=0)
*b++ = *a--; 一个个来,赋值,最后一个赋给第一个,stc最后一个前移,dest第一个后移
char *dest = (char*)malloc( len+1); 这句是给dest申请空间
char *a = &src[len-1]; 把src数组的最后一个地址赋值给a
char *b = dest; 把dest的第一个的地址赋值给b
int j; 用J计数循环
j = len; 循环len次
while(j--!=0)
*b++ = *a--; 一个个来,赋值,最后一个赋给第一个,stc最后一个前移,dest第一个后移
展开全部
这个程序的目的是将输入的字符串倒过来用另一个字符串存储并且输出。
char *dest = (char*)malloc(len+1); //申请一个长度为len+1的连续地址并且dest指向这个地址区域的头地址,这相当于创建了一个 [length+1]的数组
char *a = &src[len-1]; //a 指向src字符串最后一个字符的地址
char *b = dest; // b指向dest的地址,也就是说指向刚申请的地址区域的首地址
int j;
j = len; //因为要将src倒着拷贝到dest 里面,每次拷贝1个字符,而src有len个字符,所以总共要拷贝len次
while(j--!=0) // j--!=0 等于 j=j-1; j !=0 就是说我每循环(拷贝一次)剩下的工作还要拷贝j-1次,如果当前还剩余的次数不为0,继续拷贝
*b++ = *a--; //等同于 *b = *a; b = b+1; a = a-1;
char *dest = (char*)malloc(len+1); //申请一个长度为len+1的连续地址并且dest指向这个地址区域的头地址,这相当于创建了一个 [length+1]的数组
char *a = &src[len-1]; //a 指向src字符串最后一个字符的地址
char *b = dest; // b指向dest的地址,也就是说指向刚申请的地址区域的首地址
int j;
j = len; //因为要将src倒着拷贝到dest 里面,每次拷贝1个字符,而src有len个字符,所以总共要拷贝len次
while(j--!=0) // j--!=0 等于 j=j-1; j !=0 就是说我每循环(拷贝一次)剩下的工作还要拷贝j-1次,如果当前还剩余的次数不为0,继续拷贝
*b++ = *a--; //等同于 *b = *a; b = b+1; a = a-1;
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询