在我看来,两者都有可能溢出缓冲区.但我建议永远不要使用gets()但仍然鼓励使用scanf().
是仅仅因为scanf()中允许的格式化参数还是有其他原因?
在c中,如果我声明如下:
char *somarray[] = {"Hello"};
Run Code Online (Sandbox Code Playgroud)
这是什么意思 ?
如果我打印它:
somarray - >给我一个堆栈中的内存地址
&somarray - >同样的事情,堆栈内存地址,但..
*somarray - >给我一个常量的内存地址
我实际上可以*somarray用来打印字符串.
到底是怎么回事?
我知道指针是什么,但在一些编码练习中,我有一个拼写错误,而不是int*使用*int.
我明白这是错的,但它是否意味着C中的某些东西(例如语法上有效)?它是静态语义吗?它只是未定义?
无法用编译器警告弄明白.
编辑:(相关编译器警告)
void input(*int ,*int );
Run Code Online (Sandbox Code Playgroud)
:10:错误:在"int"之前的预期primary-expression:10:错误:在"int"之前的预期primary-expression:10:错误:初始化表达式列表被视为复合表达式