一个简单的c语言问题

#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行这段是什么意思,为什么这么写,谢谢啦啦
详细点,一定要详细点

你其实是想做字符串逆序输出对吧,
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第一个后移
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-06-01
这个程序的目的是将输入的字符串倒过来用另一个字符串存储并且输出。
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;本回答被网友采纳
相似回答