第一次来这还望关照
帅哥 这段代码我不明白是怎样实现的请帮忙解释一下 好吗??#include <stdio.h>main()
{
char *str = "I love FishC.com";
while( *str++ != '.' )
;
printf("%c", *str);
}
本帖最后由 maomingkun 于 2013-12-5 17:35 编辑
这个............兄弟,俺没能领悟到你的思路,你的代码是要干什么啊?
就分析你的代码来讲,事情大概是这个样子的:
char *str="I love FishC.com";定义一个指针变量存放字符串的首地址,此时,str=字符串的首地址
while( *str++ != '.' )这句代码*和++的优先级同级,且都是右结合性,所以等同于*(str++),假设str=1,这句代码的意思就是取地址1中的内容与 '.'比较,然后str自增1。
str++和++str的区别:
str++是参与运算后str自增1;++str是自增1后再参与运算。
取第一个字符与‘.’比较,然后地址增加1,然后就是判断、循环,取第二个字符与‘.’比较,地址在增加1............直到取出的字符相等时,跳出循环,此时str的地址指向com的c(因为str++)。
因为你的循环体为空,什么都不能干,所以前面取出的字符未做处理
printf("%c", *str);为什么会只输出一个c呢?因为你用的是%c,只能输出一个字符,%s是输出字符串的。
我解释了一大堆,也不知道你能不能理解,能不能解开你心中的疑惑,不懂的可以继续追问!
这段C源程序很简单,就是定义一个字符串,然后下面while(*str++!='.') ; 这句话程序上没有问题 实际表达上有点问题,我认为应该是while(*(str++)!='.') ; 才对,然后每次判断为真 就执行 分号 一次,知道判断到 点 就为假跳出while执行下面的printf("%c", *str); 这函数意思是 str字符串里的第一个字符输出 while(*str++ != '.');
可以翻译为
char c;
do
{
char c = *str;
str++;
}while(c != ''.')
while(*str++ != '.');
可以翻译为
char c;
do
{
c = *str;
str++;
}while(c != ''.') 只是指针吗 为什么我看不不懂:cry啊 叮当~ 发表于 2013-12-5 21:06 static/image/common/back.gif
这段C源程序很简单,就是定义一个字符串,然后下面while(*str++!='.') ; 这句话程序上没有问题 实际表达上 ...
哥们儿,*str++和*(str++)是一样的,*(指针运算符)和++的优先级相同,同时是右结合性所以...........是不是这样呢?可以看下他的汇编代码 个人确实无法理解 这代码他 到底有什么目的的说 他干了什么事我大概还能知道课干这些事有什么用我......
页:
[1]