指针算术

时间:2011-03-09 11:11:11

标签: c++

//if the following code works  
char *ptr=a+12;  
//why doesnt this work  
char *(ptr=a+12); 

6 个答案:

答案 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永远不会声明/定义。

简而言之,这完全没有意义。