我是语言C的初学者,我想知道它之间的区别:
int main(int argc, const char * argv[])
和此:
int main(int argc, char * argv[])
我认为这是一回事,但我不确定。有人可以解释我的不同之处。
谢谢
答案 0 :(得分:1)
int main(int argc, char * argv[])
是正确的,必须由编译器接受。
int main(int argc, const char * argv[])
可能会被编译器拒绝。如果编译器接受它,那么行为是实现定义的。这意味着编译器必须记录它接受的main
的非标准签名,并记录每个签名的行为。
因此,请参阅编译器的文档,了解它对main
的参数的含义。合理的期望是编译器使此表单的行为与int main(int argc, char *__argv[]) { const char **argv = (const char **)__argv;
的行为相同。
答案 1 :(得分:0)
我想首先你需要知道<!-- In Master Layout.cshtml -->
@{
string currentAction = ViewContext.RouteData.Values["action"].ToString();
string currentScript = currentAction + ".js";
}
<script src= "@currentScript"></script>
和const char* c;
char *const c;
中,const意味着您无法将内容const char* c
更改为。c
中,const表示您无法将位置char *const c
更改为。如您所知,c
中存储的值是内存中的地址,因此第一个char* c
表示const
指向的值不应更改。第二个表明c
的值不应该改变。
因此,在c
中,const char * argv[]
是argv
变量的数组。这意味着const char*
中每个元素指向的内容都是常量。实际上,每个元素指向一个字符串,argv
是一个存储CL传递给你的“参数”的字符串数组。你只能读取参数但修改它们。
当然,如果错过argv
,编译器不会阻止你。如果是这样,你可以更改代码中字符串的内容,我想没有任何事情会发生,因为这些参数供你阅读。 :)