程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c++-C++中strcmp和 ==的比較問題

c++-C++中strcmp和 ==的比較問題

編輯:編程綜合問答
C++中strcmp和 ==的比較問題
    char *str1 = "hello";
    char str2[] = "hello";
    if (str1 == "hello")
        printf("ok1\n");
    if (str2 == "hello")
        printf("ok2\n");
    if (strcmp(str1, "hello"))
        printf("ok3\n");
    if (strcmp(str2, "hello"))
        printf("ok4\n");

一道基礎題,知道 ==比較地址,strcmp比較內容。
請各位大神指教為何輸出的是 ok1 謝謝!

最佳回答:


"hello"是字符串常量,編譯器會進行優化:

由於所有的"hello"都是相同的,整個程序中只需要有一個"hello"字符串。然後所有引用"hello"這個字符串的**指針變量**都賦值成相同的地址。

所以:

char *str1 = "hello";"hello"的地址是相同的。

對於:char str2[] = "hello";,這裡str2並不是指針,類型裡已經說明它是一個數組,所以這會是另一個內存地址,於是str2"hello"的地址是不同的。

strcmp的部分你應該清楚,我就不解釋了。

Cashey1991
search91
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved