鑑於scanf在documentation from Microsoft中有(const char *),並且回答了this question當我對(char **)提升(const char **)做同樣的事情時會發生什麼?這爲什麼允許從(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;
}
這兩者似乎都在對指針做同樣的事情!
你不明白一件事:如果T - > U工作,那麼這並不意味着T * - > U *的作品。只是一個簡單的:double a = 4;/* int - > double */int p; double * dp =&p;/* int * - > double * ?? */ – 2009-04-19 23:40:42
我不會在這裏改變類型......兩組都是指針。 – ojblass 2009-04-19 23:43:02
請關閉另一個,而不是這個...... – ojblass 2009-04-19 23:48:36