加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c中关于char指针的混淆

发布时间:2020-12-16 10:51:27 所属栏目:百科 来源:网络整理
导读:我是c语言的新手,我正在努力理解指针概念. 我有关于char指针的基本问题, 我所知道的是指针是一个存储地址值的变量, 所以当我写这样的时候: char * ptr = "hello"; 根据我的基本知识,我认为在=之后应该有一个地址分配给指针,但是在这里我们分配“hello”这是
我是c语言的新手,我正在努力理解指针概念.

我有关于char指针的基本问题,

我所知道的是指针是一个存储地址值的变量,
所以当我写这样的时候:

char * ptr = "hello";

根据我的基本知识,我认为在=之后应该有一个地址分配给指针,但是在这里我们分配“hello”这是一组chars.
那是什么意思呢?
指针ptr是否指向存储“hello”的地址?或者它本身存储你好?
我很困惑,希望你们能帮帮我..

提前致谢.

解决方法

ptr将地址保存到文本“hello”的存储位置.在这种情况下,它指向一个字符串文字.它是位于静态(最常见的只读)内存中的不可变字符数组.

您可以通过重新分配来使ptr指向其他内容,但在此之前,修改内容是非法的. (它的类型实际上是const char *,为了C兼容性,不推荐转换为char *(在C 11中甚至是非法的).

由于这种保证,编译器可以自由地优化空间,因此

char * ptr = "hello";
char * ptr1 = "hello";

可能会产生两个相等的指针. (即ptr == ptr1)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读