我在某处读到?:C 中的运算符在C++中略有不同,有些源代码在两种语言中都有不同的作用.不幸的是,我找不到任何地方的文字.有谁知道这有什么区别?
C让我char经常交替使用指针和数组,我经常认为它们是完全可互换的.但是下面的代码证明了这不是真的.任何人都可以解释为什么在const char d[]下面的代码中使用三元运算符的初始化是非法的?
/* main.c */
#include <stdio.h>
int main()
{
const char* a = "lorem";
const char b[] = "ipsum";
int* p;
const char* c = ( *p ? "dolor" : "sit" );
const char d[] = ( *p ? "amet" : "consectetur" ); // Why am I an error?
return 0;
}
Run Code Online (Sandbox Code Playgroud)
汇编:
> gcc -g main.c
main.c: In function \u2018main\u2019:
main.c:10:20: error: invalid initializer
const char d[] = ( *p ? "amet" …Run Code Online (Sandbox Code Playgroud)