C语言我常遇问题

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--


 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值