如何初始化字符指针并分析相关程序实例?

2026-05-26 02:380阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1319个文字,预计阅读时间需要6分钟。

如何初始化字符指针并分析相关程序实例?

1. 初学者常被这个问题困扰:`char *p=abc==abc` 是一个 `const char*`,为什么能赋值给 `char *p` 呢?

2.许多论坛上都能看到这样的提问,不过这些帖子中有的是错误的,有的则是对的呢。

1. 初学者经常被这个问题所困惑: char *p="abc"==>"abc"是一个const char*,为什么能够赋值给char *呢?

2. 很多论坛上都可以看到这样的提问帖,不过这些帖子有的讲的是错误的,有的虽然是对的,但是讲的不细致,初学者不好理解。对此,我根据我的经验,以及CSDN上的一些帖子仔细地说一下其中的道理。

3. 按照 C/C++ 标准的描述,"abc" 是 string literal (字符字面量、字符文字量),具有静态存储性质,类型是数组类型,并且不能被改变。注意:"abc" 是一个数组类型的对象,是左值。当然左值可以转化为右值使用,就像数组类型的对象可以转化为指针一样。

4. 虽然 "abc" 是数组类型,但是 C 和 C++ 在类型规定上是有区别的:在 C 中,"abc" 的类型是 char [4];在 C++ 中,其类型是 const char [4]。 由于数组类型可以转换为指针类型来使用,所以在 C 和 C++ 中 "abc" 可分别作为 char* 及 const char* 使用。

5. 为了兼容c中char *p="abc"这种现象的存在,C++特别允许初始化时const char*到char*的自动转换。但是这条规则被 C++ 标明为 “Deprecated”,不被推荐使用。

阅读全文

本文共计1319个文字,预计阅读时间需要6分钟。

如何初始化字符指针并分析相关程序实例?

1. 初学者常被这个问题困扰:`char *p=abc==abc` 是一个 `const char*`,为什么能赋值给 `char *p` 呢?

2.许多论坛上都能看到这样的提问,不过这些帖子中有的是错误的,有的则是对的呢。

1. 初学者经常被这个问题所困惑: char *p="abc"==>"abc"是一个const char*,为什么能够赋值给char *呢?

2. 很多论坛上都可以看到这样的提问帖,不过这些帖子有的讲的是错误的,有的虽然是对的,但是讲的不细致,初学者不好理解。对此,我根据我的经验,以及CSDN上的一些帖子仔细地说一下其中的道理。

3. 按照 C/C++ 标准的描述,"abc" 是 string literal (字符字面量、字符文字量),具有静态存储性质,类型是数组类型,并且不能被改变。注意:"abc" 是一个数组类型的对象,是左值。当然左值可以转化为右值使用,就像数组类型的对象可以转化为指针一样。

4. 虽然 "abc" 是数组类型,但是 C 和 C++ 在类型规定上是有区别的:在 C 中,"abc" 的类型是 char [4];在 C++ 中,其类型是 const char [4]。 由于数组类型可以转换为指针类型来使用,所以在 C 和 C++ 中 "abc" 可分别作为 char* 及 const char* 使用。

5. 为了兼容c中char *p="abc"这种现象的存在,C++特别允许初始化时const char*到char*的自动转换。但是这条规则被 C++ 标明为 “Deprecated”,不被推荐使用。

阅读全文