[英]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.