& definição de operador para matrizes em C
Uma pergunta recente levou a uma discussão centrada em matrizes e ponteiros. A pergunta estava em referência ascanf("%s", &name)
vsscanf("%s", name)
.
Para o código a seguir, a Microsoft resolve isso para você no VS2010 (e talvez nas versões anteriores?),
#include <stdio.h>
int main()
{
char name[30];
printf("Scan \"name\" - ");
scanf("%s", name);
printf("Print \"&name\" - %s\n", &name);
printf("Print \"name\" - %s\n", name);
printf("Pointer to &name - %p\n", &name);
printf("Pointer to name - %p\n", name);
printf("\n\n");
printf("Scan \"&name\" - ");
scanf("%s", &name);
printf("Print \"&name\" - %s\n", &name);
printf("Print \"name\" - %s\n", name);
printf("Pointer to &name - %p\n", &name);
printf("Pointer to name - %p\n", name);
return 0;
}
Isso é realmente definido no Padrão ANSI C ou é permitido depender do compilador? Isso funciona porque a MS está tratando tudo como C ++? Por favor, ignore os problemas de estouro de buffer por enquanto.