Учитывая, что scanf имеет (const char *) в документации от Microsoft и ответ на этот вопрос что, черт возьми, происходит, когда я делаю то же самое для (char **) ) повышение до (const char **)?
В основном, почему это компилируется?
#include <stdio.h>
int main(int argc, char **argv)
{
char szArray[50];
int i = 0;
strcpy(szArray,"10");
/* the following code is upcasting the (char *) to (const char *) */
sscanf(szArray,"%d",&i);
return 0;
}
А почему не скомпилируется?
#include <stdio.h>
void processargs(const char **p)
{
}
int main(int argc, char **argv)
{
processargs(argv);
return 0;
}
Кажется, что оба делают одно и то же с указателем!