//if the following code works
char *ptr=a+12;
//why doesnt this work
char *(ptr=a+12);
答案 0 :(得分:2)
因为(ptr=a+12)
不是变量的有效名称。你想要达到什么目的?
答案 1 :(得分:2)
因为char *ptr=a+12;
是一个带初始值设定项的声明,而char *(ptr=a+12);
是......好吧,没有。
但这会奏效。
char* ptr;
ptr = a+12;
char x = *(ptr = a+12);
答案 2 :(得分:0)
char * ptr;
声明一个变量,=a+12
给它一个值。你正在做什么是没有意义的,变量必须存在才能分配一个值。你想要实现什么目标?
这是有效的。
char * foo;
char * ptr = (foo = a + 12);
答案 3 :(得分:0)
因为你将整个表达式声明为指针,这没有任何意义。指针必须是变量。
答案 4 :(得分:0)
()
具有更高的优先级。因此,其中的表达式首先求值,而不是要分配给的有效lvalue
。
答案 5 :(得分:0)
char* ptr = a + 12;
声明并定义一个指向char的指针,指向a
之后的12个字符。
char* (ptr = a + 12);
尝试将值(a + 12
)分配给指针ptr
,然后取消引用它以生成值。但是Type value
无效语法(如int 0;
或char 'x';
无效),ptr
永远不会声明/定义。
简而言之,这完全没有意义。