写在开头:关于这随笔是怎么来的↓ 因为这题我看半天的事情太值得吐槽了。于是这里成了错题随笔。
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.