为了账号安全,请及时绑定邮箱和手机立即绑定

用scanf读取字符串

用scanf读取字符串

C
月关宝盒 2019-07-10 14:45:07
用scanf读取字符串我有点糊涂了。我的印象是用正确的方式读取C字符串scanf()沿着…的路线(别管可能的缓冲区溢出,这只是一个简单的例子)char string[256];scanf( "%s" , string );然而,以下几点似乎也有效,scanf( "%s" , &string );这只是我的编译器(GCC),纯粹的运气,还是别的什么?
查看完整描述

3 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

我认为以下所述是正确的,可能会有所帮助。如果你发现任何错误,请随时改正。我是新来的C。

char str[]
  1. 类型char的值数组,并在内存中具有自己的地址。
  2. 类型char的值数组,其在内存中的地址与数组中的元素一样多。
  3. 包括终止空字符'\0' &str&str[0]str,它们都表示内存中相同的位置,即数组的第一个元素的地址。str

    Char*strPtr=&str[0];/声明和初始化

或者,您可以将其分成两部分:

char *strPtr; strPtr = &str[0];
  1. strPtr

    是指向

    char

  2. strPtr

    点阵

    str

  3. strPtr

    是一个在内存中具有自己地址的变量。
  4. strPtr

    存储地址值的变量。

    &str[0]

  5. strPtr

    内存中自己的地址不同于它存储的内存地址(内存中数组的地址,即a.k.a&str[0])。
  6. &strPtr

    表示strPtr本身的地址。

我认为您可以将指向指针的指针声明为:

char **vPtr = &strPtr;

用strPtr指针的地址声明和初始化

或者你可以分成两半:

char **vPtr;*vPtr = &strPtr
  1. *vPtr

    指向strPtr指针
  2. *vPtr

    是一个在内存中具有自己地址的变量。
  3. *vPtr

    是存储Address&strPtr值的变量。
  4. 最后评论:你不能

    str++str

    地址是

    const

    ,但你可以

    strPtr++


查看完整回答
反对 回复 2019-07-10
  • 3 回答
  • 0 关注
  • 1639 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信