1.指针指向问题
数组arr传参传的是数组首元素地址,然后arr++,arr偏移,这个时候arr已经不再指向数组首元素地址了
2.操作符优先级问题
问题:关系操作符的优先级大于运算符,也就是说上图代码在if语句中他还没按位与&就已经判断是否相等了,给每个a&c加上括号,如果不想关注优先级问题的话就每次写表达式加上括号即可
3.强制类转换问题
强制类转换就是把变量从一种类型转换为另一种数据类型
指针问题
指针就是变量,用来存放地址,地址是唯一标识的一块内存空间
这里的第8行代码if语句里面和第13行代码else if语句里面直接用arr1指针变量和arr2指针变量做比较,比较的是地址的大小,所以错误,这里应该解引用或者说通过指针找到以它为下标锁定它的元素然后再进行比较
指针是有类型的,指针的类型决定了指针加减的步长,地址++也找到了下一个地址
结构体数组里面结构体的字符数组成员的字符与其它字符比较是否相等
出自编写通讯录代码中
结构体数组有一千个元素,每个元素都是一个结构体类型,结构体类型里面有一个char类型数组成员char arr[],意思是有一千个字符串要比较,所以第一幅图正确,第二幅图只能单一比较一个字符串.
数据删除
删除一般不是真的删除数据,而是把新的数据覆盖到旧的数据当中,这里sign--是因为如果不减减--的话for循环中的i跑到最后时,数组arr[i]=arr[i+1]会越界,所以for循环中的i不能跑到最后,只能跑到倒数第二位,所以sign--