字符数组和常量字符串

str1和str2是数组,他们在内存中占用两块不同的空间,所以str1!=str2。str3和str4指向的是常量字符串,他们指向的常量字符串相同,常量字符串存储在内存的只读数据区,不允许修改,如果已经声明了一个常量字符串,如果后续声明相同的常量字符串,不会继续在内存开辟新的空间存放它,而是指向已经存在的常量字符串,这里str3和str4中存储的都是字符串"1234"的首元素地址,所以str3==str4 。有点类似java的字符串常量池。 

 

int main()
{

    char str1[] = ['1', '2', '3', '4'];
    char str2[] = ['1', '2', '3', '4'];

    char* str3 = "1234";
    char* str4 = "1234";


    if (str1 == str2)
    
        printf("same");
    
    else
        printf("not same");

    if (str3 == str4)
        printf("same");
    else
        printf("not same");

    return 0;
}

 

posted @ 2021-03-16 00:06  别学无止境  阅读(182)  评论(0)    收藏  举报