为什么我们访问由 char* 指向的字节的值而不是指针的值?

厨师

从本主题的先前问题中,我了解到指针指向字符串的第一个字符,并期望以下字符成为字符串的一部分,直到出现空字符。我的问题是如何做到这一点的声明,例如工作:

 const char* name = "abc"; 

据我了解,const char* 的值不是短语“abc”,它是一个整数,指向我记忆中“a”字符的位置。这部分是我不明白的。为什么?

我们不应该只能通过首先取消引用指针来为字节赋值吗?

463035818_is_not_a_number

为什么?因为这就是指针的作用,它们的值是一个内存地址。的类型"abc"实际上是const char[4](空终止符的类型之一)。数组可以衰减到指向它们的第一个元素的指针。

我们不应该只能通过首先取消引用指针来为字节赋值吗?

否。要将值分配给对象,请将该值分配给对象。当您想将一些东西分配给指针指向的内容时,您可以取消对指针的引用:

int x;
int* y = &x;  // <- initialize the pointer with address of x
*y = 5;       // dereference y and assign 5 to x

关于如何管理字符串文字的内存,我向您推荐这个答案:https : //stackoverflow.com/a/2740728/4117728

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如果resp是指向响应对象的指针,为什么我们不必使用resp *来访问其值?

在此示例中,为什么我们返回一个指针而不是一个值?

为什么我们需要指针为Go / C中的变量分配值,而不是C#/ Java中的指针

为什么我们不能将字符串值分配给2d char数组?

为什么我们可能需要Monad而不是Monad

为什么我们仍然可以在Python中读取字节值

在OCaml中,我们为什么有'+。','-。' 但是我们仅使用“ <”而不是“ <。”?

为什么基于我们访问它的方式在iife中更改`X`的值?

指向char的指针中的垃圾值

为什么我们使用()=> []而不是[]?

为什么我们使用mask来削减字节?

为什么我们为glfwCreateWindow使用指针?-OpenGL

如果我们改变char * ptr =,指针指向的地址会改变吗?

为什么下面的代码段返回指针所指向的值而不是指针的地址?

如何在VSCode的调试器模式下查看由指针指向的字符串的char值

为什么我们仍然使用CPU而不是GPU?

为什么我们需要把*用作指针

为什么我们使用WebDriver而不是Selenium IDE?

为什么我们使用>>从RGB获取颜色值?

指向char地址的指针的值

交换char指针的值

我怎样才能从C中的char数组的char指针(指向)的副本上复制相同的值?

为什么 strcpy 返回 char * 而不是 char

为什么我们需要浮点指针或整数指针分别指向浮点变量或整数变量?

在C中打印指向char的指针的值

为什么我们使用 promise 而不是 if/then 语句?

如果字符文字总是 int 类型,为什么我们在 C 中有 char 类型?C 中的整个 char 类型不是多余的吗?

在纯 C 中,我们可以使用指向 char 的指针而不是指向 void 的指针来实现泛型函数吗?

如果键是动态生成的,为什么我们不能使用点属性访问器查找对象值?