📜  为什么scanf()函数的字符串不使用“&”?

📅  最后修改于: 2021-05-26 01:18:55             🧑  作者: Mango

下面是Scanf的语法。它需要两个参数:

scanf("Format Specifier", Variable Address);

Format Specifier: Type of value to expect while input
Variable Address: &variable returns the variable's memory address.

如果是字符串(字符数组),则变量本身指向相关数组的第一个元素。因此,无需使用“&”运算符来传递地址。

// C program to illustrate  not using "&"
// in scanf statement
#include
int main()
{
    char name[25];
  
    // Syntax to scan a String
    scanf("%s", name);
  
    // Comparing base address of String with adrress
    // of first element of array which must return
    // true as both must be same
    printf("(Is Base address = address of first element)? \n %d",
           (name == &name[0]));
  
}

输出:

(Is Base address = address of first element)?
1

重要事项

  1. “&”用于获取变量的地址。 C没有字符串类型,String只是一个字符数组,而数组变量存储第一个索引位置的地址。
  2. 默认情况下,变量本身指向基址,因此访问字符串的基址,无需添加额外的“&”
想要从精选的最佳视频中学习和练习问题,请查看《基础知识到高级C的C基础课程》。