c/c++开发分享使用typedef时,为什么非const指针被视为const?

typedef char* c; const c ptr1 = "pointer"; ++ptr1; /// error const char* ptr2 = "pointer"; ++ptr2; /// runs fine 

现在ptr1应该是const char*类型,因此是非const指针,那么为什么它被视为常量指针?

    他们不一样。

    第一个指定const-pointer-to-char,第二个指向const-char指针。

    尝试从右到左阅读:

     const char *p; // p is a pointer to char which is const char const *p; // p is a pointer to const char (same as previous) char * const p; // p is a const pointer to char char const * const p; // p is a const pointer to const char 

    通过使用typedef typedef char* c您将“指向char的指针”包含在一个别名c

     const cp; // p is a const [c] --> p is a const [pointer to char] 

    补充说明:

    Typedef不像宏那样就地扩展,即

     const cp; 

    真的变成了

     const [char*] p; 

    它不会成为

     const char* p; // Nope. 

    不要像脑中的宏一样扩展它,使用typedef,你将char*绑定在一起并形成一个primefaces。

    ptr1是一个const (char *) ,意思是指针本身是一个const,而ptr2是一个(const char) * ,意味着指针的目标是const。

    它与c内部组合的方式有关。 一个typedef不像一个宏,它不仅仅是替代它。如果你在它中使用pus括号,它将会是这样的。

     const (char*) ptr1 = "pointer"; (const char)* ptr2 = "pointer"; 

    写得像:

     typedef char* c; c const ptr1 = "pointer"; ++ptr1; /// error char const* ptr2 = "pointer"; ++ptr2; /// runs fine 

    使差异更明显,这应该与您的示例相同

      以上就是c/c++开发分享使用typedef时,为什么非const指针被视为const?相关内容,想了解更多C/C++开发(异常处理)及C/C++游戏开发关注(猴子技术宅)。

      本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

      如若转载,请注明出处:https://www.ssfiction.com/c-cyuyankaifa/545883.html

      发表评论

      电子邮件地址不会被公开。 必填项已用*标注