不能对数组名进行直接复制与比较。
2013-04-22 15:42
661 查看
不能对数组名进行直接复制与比较。示例中,若想把数组a的内容复制给数组b,不能用语句 b = a ,否则将产生编译错误。应该用标准库函数strcpy进行复制。同理,比较b和a的内容是否相同,不能用if(b==a) 来判断,应该用标准库函数strcmp进行比较。
语句p = a 并不能把a的内容复制指针p,而是把a的地址赋给了p。要想复制a的内容,可以先用库函数malloc为p申请一块容量为strlen(a)+1个字符的内存,再用strcpy进行字符串复制。同理,语句if(p==a) 比较的不是内容而是地址,应该用库函数strcmp来比较。
语句p = a 并不能把a的内容复制指针p,而是把a的地址赋给了p。要想复制a的内容,可以先用库函数malloc为p申请一块容量为strlen(a)+1个字符的内存,再用strcpy进行字符串复制。同理,语句if(p==a) 比较的不是内容而是地址,应该用库函数strcmp来比较。
// 数组… char a[] = "hello"; char b[10]; strcpy(b, a); // 不能用 b = a; if(strcmp(b, a) == 0) // 不能用 if (b == a) … // 指针… int len = strlen(a); char *p = (char *)malloc(sizeof(char)*(len+1)); strcpy(p,a); // 不要用 p = a; if(strcmp(p, a) == 0) // 不要用 if (p == a) …
相关文章推荐
- 关于EAS中供应链管理的kdtable不能直接使用ctrl+c、v进行复制、粘贴的问题
- 结构体如果没有重载比较运算符,不能直接进行比较
- 有两等长数组A,B,所含元素相同,但顺序不同,只能取得A数组某值和B数组某值进行比较,比较结果为大于,小于,等于,但是不能取得同一数组A或者B中两个数进行比较,也不能取得某数组中的某个值
- java中分割字符串成数组时,小圆点不能直接进行分割
- java类中用类的数组作为函数参数传给类,为什么不能直接对类的数组进行操作?
- float为什么不能直接用==作比较
- [RS]2000下开发的DeliveryExtension不能直接对Excel文件进行操作!
- Java的内存复制(主要是数组)效率比较
- 不使用中间数组进行两个不规则数组复制
- 论各种操作js数组去重 (附个人深度去重法:见3——针对对象进行强比较去重)
- 为什么Windows 7远程登录时本机和远程机间不能直接复制粘贴文件
- c语言把一个数组里面的部分值直接复制到另外一个数组
- java中Object数组不能直接转为对应类型的类数组
- java的数组复制效率比较
- MySQL 数据库直接复制文件,InnoDB类型表不能用解决方案
- laravel查询得到的数据(为对象object)无法进行数组循环遍历,而且不能用数组方式访问和查看的原因以及解决方法
- Java 4种数组复制方式的性能比较
- mmap做映像和直接进行IO的效率比较
- java Long、Integer 、Double、Boolean类型 不能直接比较
- 抽象类和接口作为形式参数 多态 抽象类和接口虽然都不能直接创建对象,但是可以通过多态进行对象的创建