while的问题
时间:2013-06-20
来源:互联网
这是C Programming。
但我明白while是什么意思。
谢谢。
复制内容到剪贴板
#include <string.h>
char* strDup(char *);
int main(void)
{
char *str;
str = strDup("this is a test");
printf("The string is: %s\n", str);
return 0;
}
char* strDup(char *s)
{
char *ps;
char *pkopy;
if ((pkopy = (char *)malloc(strlen(s) + 1)) == NULL)
return NULL;
ps = pkopy; /*remember the starting position */
while (*pkopy++ = *s++)
;
pkopy = ps;
/* strcpy(pkopy,s); */
return pkopy;
}
我不太懂这句是如何运行的,代码:
#include <stdio.h>#include <string.h>
char* strDup(char *);
int main(void)
{
char *str;
str = strDup("this is a test");
printf("The string is: %s\n", str);
return 0;
}
char* strDup(char *s)
{
char *ps;
char *pkopy;
if ((pkopy = (char *)malloc(strlen(s) + 1)) == NULL)
return NULL;
ps = pkopy; /*remember the starting position */
while (*pkopy++ = *s++)
;
pkopy = ps;
/* strcpy(pkopy,s); */
return pkopy;
}
但我明白while是什么意思。
复制内容到剪贴板
;
有人可以跟我解释一下吗?代码:
while (*pkopy++ = *s++);
谢谢。
作者: wong_cnine 发布时间: 2013-06-20
while (*pkopy++ = *s++)
我们由右向左续一了解:
1. *s++ 等於 在s指标所在的位置取得一个字母,然后指标向后移一个位
2. = 将之前s取得一个字母传给左手边
3. *pkopy++ 等於 取得字母并且存入当前pkopy指标所指的位置,然后指标向后移一个位
4. 当s指标一路向后移,直到取得一个0值时(c字串的尾部),同样这0直也会传给pkopy。
5. 由於s传给pkopy后,工作已经完成,留下就只有pkopy这个算法,而这个算法的结果是0,当while得到0时(0同样代表false)循环就会完结。
我们由右向左续一了解:
1. *s++ 等於 在s指标所在的位置取得一个字母,然后指标向后移一个位
2. = 将之前s取得一个字母传给左手边
3. *pkopy++ 等於 取得字母并且存入当前pkopy指标所指的位置,然后指标向后移一个位
4. 当s指标一路向后移,直到取得一个0值时(c字串的尾部),同样这0直也会传给pkopy。
5. 由於s传给pkopy后,工作已经完成,留下就只有pkopy这个算法,而这个算法的结果是0,当while得到0时(0同样代表false)循环就会完结。
作者: tcell 发布时间: 2013-06-21
另外想指出,你的代码最后一部份是:
pkopy = ps;
return pkopy;
上面的pkopy = ps是没有必要的,只需一行:
return ps;
就可以了,因为之前ps已经取得pkopy开头的位置了。
pkopy = ps;
return pkopy;
上面的pkopy = ps是没有必要的,只需一行:
return ps;
就可以了,因为之前ps已经取得pkopy开头的位置了。
作者: tcell 发布时间: 2013-06-21
哦..我明白了,
你解释得很详细,
之前不知道while能单独使用。
感谢。
你解释得很详细,
之前不知道while能单独使用。
感谢。

作者: wong_cnine 发布时间: 2013-06-21
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28