【发布时间】:2019-10-15 15:39:07
【问题描述】:
我需要了解这两种声明的区别:
char *ptr ;
(char *) ptr = ptr1;
【问题讨论】:
-
一个编译。一个没有。只需尝试编译它们,您就可以很容易地发现这一点。
-
第二行
(char *) ptr = ptr1;从哪里来的?这不是声明。这是没有意义的。
标签: c pointers declaration
我需要了解这两种声明的区别:
char *ptr ;
(char *) ptr = ptr1;
【问题讨论】:
(char *) ptr = ptr1;从哪里来的?这不是声明。这是没有意义的。
标签: c pointers declaration
只有一个声明
char *ptr ;
表达式语句
(char *) ptr = ptr1;
将无法编译,因为左侧使用了一个临时对象,而不是由于 C 形式的转换而成为左值。
也许你的意思如下
char ( *ptr ) = ptr1;
在这种情况下,它确实是一个声明,并且与
char *ptr = ptr1;
不同之处在于下面的例子
char * p[N];
和
char ( *p )[N];
第一个声明声明了一个包含 N 个 char * 类型元素的数组。
第二个声明声明了一个指向 char[N] 类型数组的指针。
【讨论】: