写在开头:关于这随笔是怎么来的↓ 因为这题我看半天的事情太值得吐槽了。于是这里成了错题随笔。

1.

 

今天把MOOC上的代码粘到编译器里时干了件傻事。

我没有把它放在主程序main中......

一开始以为是符号格式的问题......

加上就没问题了。

2.数组的大小

 

 5个空位,却初始化了6个数。

这个错误,我不该没看出来。

 

3.数组下标

 

 z是二行三列。

 

4.数组下标从0开始

 

 

 是第三行第二个数,即5。

 

5.数组下标

 

 a[b-'b']相当于a['c'-'b']=a[1]=2。

 

6.数组大小对应下标-1

 

 array大小只有5,不能修改第一个for语句来实现存入a[1]~a[5]。

 

7.运算符结合方向和顺序

 

 

大多数运算符结合性是从左到右,只有三个优先级是从右至左结合的,它们是单目运算符、条件运算符、赋值运算符。 基本的优先级需要记住: 指针最优,单目运算优于双目运算。

这里先执行==判断,获得返回值0,再将0赋给a。

 

8.常用的string函数返回值

char s1[]="abcd",s2[]="a";
if
(strcmp(s1,s2)==1) printf("ok"); 

 字符串赋值用双引号。

strcmp函数是相等时返回0。

左大于右返回1,右大于左返回-1.

 

9.指针下标

 

 数值为九,即a[8]。

*p=a,p一开始指向a[0]。

对于A选项,p右移9,来到了a[9],B同理。

C选项,先将p的地址右移8,地址值加了32,此时p指向a[8]。

D不用看了,就是地址,所以错。

 

10.数组初始化

char s[10];
s="abcdefg";

会报错。

只有申明变量时才能对整个数组进行操作。

 

但是↓

char *str;
    str="string";
    printf("%s",str);

可以成功输出字符串“string”。

山湖海 11:22:30
就是指针允许它指向一个字符串常量" string"
本来字符串常量是以无名数组的形式存放内存中的。
现在它就有了个名字叫str

绝大多数是指针指向一个变量,这才能发挥指针的功效

山湖海 11:27:15
str是指针
但它现在指向了一个串常量
就只能当指针常量来用了
它所指的内容也不能修改了


白 11:28:09
也就是说不能再对*str赋值了吗


山湖海 11:28:10
但这种情形很少见!只是C语言允许


山湖海 11:28:24
对,str[0]='c'就错了


 

 

11.