【问题标题】:C - why is & needed for char array scan but not int? [duplicate]C - 为什么char数组扫描需要&而不是int? [复制]
【发布时间】:2022-01-11 06:19:46
【问题描述】:

我在这里的第一篇文章。用 C 编程。抱歉,如果之前已经回答过这个问题,因为我不知道如何搜索它。我想知道为什么在扫描 int 时需要放置 & 运算符,而不是 char 数组。我的猜测是它与将 int 存储在地址中有关,而不是在数组中,但我不完全理解。

这是我的代码:

#include <stdio.h>

int main(void) {

  char user_word[10];

  printf("enter a word: ");

  scanf("%s", user_word);

  printf("%s\n", user_word);

  int user_num;
  
  printf("enter a number: ");

  scanf("%d", &user_num);

  printf("%d\n", user_num);

}

另外,如果我的输入方式有任何错误的编码约定,请告诉我。

谢谢:)

【问题讨论】:

    标签: arrays c char integer operators


    【解决方案1】:

    scanf 函数需要一个指针。 &amp; 运算符获取变量的地址。当传递给函数时,任何数组(包括char 数组)都会衰减为指向其第一个元素的指针,因此不需要&amp; 运算符。

    这可以在下面的打印整数数组的非常简单的程序中看到。

    #include <stdio.h>
    
    void print(int *arr, size_t n) {
        for (size_t i = 0; i < n; ++i) {
            printf("%d\n", arr[i]);
        }
    }
    
    int main(void) {
        int arr[] = {1, 2, 3, 4, 6, 7, 8, 9};
    
        print(arr, 8);
    
        return 0;
    }
    

    print 函数需要一个整数数组。数组arr 被传入并衰减为指向第一个元素的指针。

    【讨论】:

      猜你喜欢
      • 2020-01-25
      • 2012-07-15
      • 1970-01-01
      • 2015-11-07
      • 1970-01-01
      • 2010-10-01
      • 2015-12-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多