簡體   English   中英

如果我繼續重新聲明它,為什么 size_t 不抱怨?

[英]Why doesn't size_t complain if I keep re-declaring it?

如何在 C 中執行以下操作?

char * string;
size_t string_len;
unsigned int idx;

for (idx=0; (string=src[idx]) != NULL; idx++) {
    size_t string_len = strlen(string);
    if (!(dest[idx] = malloc(string_len + 1))) {
        perror("Failed to copy string value");
        exit (EXIT_FAILURE);
    }
    dest[idx] = string;
}

不應該在第 6 行重新聲明size_t引發錯誤,類似於我要重新聲明int idx嗎?

當您在兩個不同的范圍內定義具有給定名稱的變量時,您實際上是在定義兩個具有相同名稱的單獨變量,並且內部 scope 中的變量掩蓋了外部 scope 中的變量。 這是完全合法的。

但是,如果您嘗試在文件 scope 之外的同一個 scope 中定義兩個具有相同名稱的變量,則會出現錯誤。 在文件 scope 中,您可能有多個聲明,但只有一個定義,即其中只有一個可以初始化變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM