char *s;//定义一个字符类指针
s="Olympic";//s指向的是字符串 "Olympic" 里的第一个字符 "O" ,s可理解为字符串
第二句若改成指向字符类指针的指针就可以正确赋值了,如下:
char **s;
s = {"Olympic", "Games", "Sports"};
这样的s可理解为指向字符串的指针,也可以理解为二维数组
可以这么理解第二句:
char *s;//定义一个字符型指针,即可以理解为字符串
{"Olympic"};//这个是一个长度为一的字符串数组,里面只有一个字符串,但它是一个数组
所以字符串类型的s不能与字符串数组的{"Olympic"}等起来
所以可以改成:
char **s;//这里有两个*号
s={"Olympic"};
定义s是字符指针,第一个s就是赋了个字符串。第二个“{}”,脚本语言里定义有,C语言里没有啊。
楼主是把 = 和 == 弄混淆了。在C语言里,一个 = 是赋值,两个连着写成 == 才是做比较是否相等。你把这里改成 if(j==0) i++;else i--; 就是你期待的结果 i值为11了。
if括号里面的判断条件也看作表达式,这个表达式的值是0时,其表示布尔型的false,值为非0时,表示true。所以一个括号里面写成赋值语句 ,其结果就是表达式值为 0,所以 if(false) 然后就执行 else 的语句去了。