¿Por qué «&» no se usa para strings en la función scanf()?

A continuación se muestra la sintaxis de Scanf. Requiere dos argumentos:
 

scanf("Format Specifier", Variable Address);

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

En el caso de una string (array de caracteres), la propia variable apunta al primer elemento de la array en cuestión. Por lo tanto, no es necesario utilizar el operador ‘&’ para pasar la dirección. 
 

C

// C program to illustrate  not using "&"
// in scanf statement
#include<stdio.h>
int main()
{
    char name[25];
 
    // Syntax to scan a String
    scanf("%s", name);
 
    // Comparing base address of String with address
    // 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]));
 
}

Producción: 
 

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

Puntos importantes

  1. ‘&’ se utiliza para obtener la dirección de la variable. C no tiene un tipo de string, String es solo una array de caracteres y una variable de array almacena la dirección de la primera ubicación de índice.
  2. De forma predeterminada, la variable en sí apunta a la dirección base y, por lo tanto, para acceder a la dirección base de la string, no es necesario agregar un ‘&’ adicional.

Este artículo es una contribución de Ajeet . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *