zoukankan      html  css  js  c++  java
  • 为什么C语言Scanf函数对字符串不要加 取地址运算符&

    原文1:http://www.360doc.com/content/16/0515/11/19455598_559288667.shtml
    原文2:https://zhidao.baidu.com/question/493101733.html
    C语言的字符串实际上是 字符数组.既然是数组, 那么数组头自然是一个指针.char str[] = {“abc”};这个str实际上是一个不可变的字符指针.scanf的参数要求传入指针. 之后按照格式化字符串对指针指向的地址赋值…str本身就是一个指针了, 所以不需要&str,如果&str, 那么得到是就是指针的指针,scanf并不只是对字符串不加 取地址运算符.例如 int arr[] = {1, 2, 3};scanf("%d", arr);这里对arr照样不需要取地址运算符, 因为arr是数组头, 本身就是一个指针.上面的语句是对arr数组的第一个元素赋值, 就是arr[0];当然也可以这么写.scanf("%d", &arr[0]);arr[0]是一个值, 并非指针, 于是对其取地址.对于字符串也可以这么写.
    char str[3] ;scanf("%c", &str[0]);这是对str的第一个元素赋值也就是 str[0];

    在这里插入图片描述
    在这里插入图片描述

  • 相关阅读:
    架构师之路
    责任链设计模式
    Junit框架分析
    线程详解
    课程总结
    IO流
    Java第四次作业
    Character string
    实训
    实训SI
  • 原文地址:https://www.cnblogs.com/tfxz/p/12621786.html
Copyright © 2011-2022 走看看