char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
来源:互联网 发布:蜂鸟众包提现网络出错 编辑:程序博客网 时间:2024/05/22 08:24
两者不相等,是因为str1 和 str2 都是字符数组,每个都有其自己的存储区,它们的值则是各存储区的首地址。但有些情况却不一样,
程序如下:
#include <stdio.h>int main(void){ const char str3[] = "abc"; const char str4[] = "abc"; const char *str5 = "abc"; const char *str6 = "abc"; if(str3 == str4) printf("Hello1 World!\n"); else printf("str3[] = 'abc'与 str4[] = 'abc' 不相等!\n"); if(str5 == str6) printf("*str5 = ‘abc’ 与 *str6 = ‘abc’ 相等!\n"); else printf("*str5 = ‘abc’ 与 *str6 = ‘abc’ 不相等!\n"); return 0;}
因为str3和str4两个字符数组都存储在栈空间上,但两者地址值不相等。而str5 和str6并非字符数组而是字符指针,并不分配存储区,其后的“abc”以常量形式存于常量区,str5 和 str6 是指它们指向的地址的首地址,而它们自己仅是指向该区首地址的指针,所以相等(&str5 和 &str6 是指指针自己的地址,所以两者地址是不相等的)。
0 0
- char str1[]="abc";char str2[]="abc";str1与str2不相等,为什么
- char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
- char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
- 7.1.7 char str1[]="abc"和char str2[]="abc";str1和str2不相等
- String str1="abc"; String str2=new String("abc");
- const char* str1="abcd"与char* str2="abcd"的区别
- String str1="abc";和String str2=new String("abc");的区别
- String str1="abc";和String str2=new String("abc");的区别
- String str1="abc";和String str2=new String("abc");的区别
- String str1="abc";和String str2=new String("abc");的区别
- String str1="ABC"; 和String str2 = new String("ABC"); 有什么区别
- $str1 = null; $str2 = false; echo $str1==$str2 ? ‘相等’ : ‘不相等’;
- str1==str2和str1.equals(str2)的问题
- 黑马程序员——String str1="abc";String str2=new String("abc");内部原理剖析
- int strncmp ( const char * str1, const char * str2, size_t num );
- strstr(char *str1, const char *str2)的应用
- function return_value=EndWith(str1,str2)
- String str1 = new String("abc")与 String str1 = "abc" 的区别
- Java常用包名及功能
- 一个初级python web后端开发工程师的面试总结
- 51nod 1042 数字0-9的数量
- 为什么全表扫描成本(COST)公式里面要除以sreadtim
- Android 状态栏操作,你想知道的都在这里了
- char str1[]="abc"; char str2[]="abc";str1与str2不相等,为什么
- idea java compiler error
- 【JZOJ4941】宝石魔术 题解
- 算法-简介
- Query接口中list()与iterator()查询的区别
- 指针和内存
- DNA对比
- Ubuntu安装后常见部署
- 分区加密