【问题标题】:Assigning a string to a pointer将字符串分配给指针
【发布时间】:2020-06-26 15:41:12
【问题描述】:

我只是想问这个:

在这段代码中我创建了一个字符串和一个指针,将这个字符串分配给指针的正确方法是什么?

char str[10] = "hello";
char* ptr

它是否适用于ptr = str? 如果不是,为什么?

【问题讨论】:

  • 你试过了吗?
  • 这能回答你的问题吗? standard conversions: Array-to-pointer conversion
  • 你问的是如何让指针指向字符串?如果是这样,你说的是两个字符串中的哪一个? (字符串常量“hello”,还是包含字符串“hello”的字符数组str?)鉴于您没有将ptr 设为指向const char * 的指针,我将假设该数组。对吗?
  • 不能将字符串分配给指针。字符串是以空字符结尾的字符数组。您可以将第一个字符的地址分配给一个指针。如果你写ptr = str,那么ptr 将指向str 的第一个字符('h' 是在运行时被复制和分配的,而不是字符串常量中的h)。跨度>

标签: c string pointers


【解决方案1】:

将此字符串分配给指针的正确方法是什么?

没有。您不能将字符串分配给指针。您只能通过数组str 的第一个元素的地址来分配指针,该数组由字符串"hello" 初始化。这是一个微妙但重要的区别。

它是否适用于ptr = str

是的,但它不会将字符串分配给指针。 str 衰减为指向 char str 数组的第一个元素的指针。之后,ptr 指向数组str,其中包含字符串"hello"


如果您不想修改字符串,您可以通过初始化指向字符串文字的指针来简化代码,该字符串存储在只读内存中,而不是char的可修改数组中:

const char* ptr = "hello";

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多