gpt4 book ai didi

函数内部的数组可以用函数的返回值初始化吗? "int arr[2]={strcmp("a","a"),strcmp ("3","5")};"对吗?

转载 作者:太空宇宙 更新时间:2023-11-04 00:07:47 27 4
gpt4 key购买 nike

是不是只有静态存储类型的变量不会被函数的返回值初始化,因为它们不被认为是常量?根据这个论点,以下声明在 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]);
}

结果 0,-1

最佳答案

静态变量不能用函数的返回值初始化的说法是正确的,但在你的例子中,arr不是静态变量,而是存储在堆栈中的变量,所以这段代码是完全有效的。

另一方面,写作:

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

出于您解释的原因,这将是非法的。

关于函数内部的数组可以用函数的返回值初始化吗? "int arr[2]={strcmp("a","a"),strcmp ("3","5")};"对吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16552621/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com