簡體   English   中英

是否可以使用函數的返回值來初始化函數內部的數組?“ int arr [2] = {strcmp(” a”,“ a”),strcmp(“ 3”,“ 5”)};”是否正確?

[英]Can arrays inside functions be initialized with the return value of functions?Is “int arr[2]={strcmp(”a“,”a“),strcmp(”3“,”5“)};” correct?

不僅不是靜態存儲類型的變量期望不使用函數的返回值來初始化,因為它們不被認為是常量嗎?通過該參數進行查找,以下聲明在C中是否有效。它會在沒有錯誤或警告的情況下編譯並輸出符合預期。

#include <stdio.h>
#include <string.h>


int main ()
{
   int arr[2]={strcmp("a","a"),strcmp("3","5")};
  printf("%d,%d",arr[0],arr[1]);
}

Result 0,-1

關於靜態變量不能用函數的返回值進行初始化的說法是正確的,但是在您的示例中,arr不是靜態變量,而是存儲在堆棧中的變量,因此這段代碼是完全有效的。

另一方面,寫:

static int arr[2]={strcmp("a","a"),strcmp("3","5")};

由於您解釋的原因,這將是非法的。

暫無
暫無

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

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