开发平台(Platform): (Ex: Win10, Linux, ...)
win10
编译器(Ex: GCC, clang, VC++...)+目标环境(跟开发平台不同的话需列出)
vscode + Mingw-w64
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
版上的各位大神们好:
想请问说为什么我高亮那行的input不用加取址符&,
以下是我的理解 有错的话烦请指正
我的理解 : 从scanf函式可知,我们要传进scanf函式的必须是个内存位址,
所以平时我 们从键盘要读入某数给变量,要用取址符&该变量,但若该变量是个阵列,
因为阵列可以隐性转型成指标,所以不需要取址符&, 且若你加了&,
得到的型态会是char(*)[5], 跟scanf函式希望吃的char *完全不同,所以这情况下是不能
加&
但我的问题是scanf的函式是长这样
int scanf (const char * format, ...)
看起来scanf的第一个参数应该要吃像是%s, %d, %c...等等之类的格式符
又跟我理解的不太一样
不晓得是哪边理解错了
谢谢大大们
程式码(Code):(请善用置底文网页, 记得排版,禁止使用图档)
//输入一个字串并印出
#include <stdio.h>
int main() {
char input[5] = {0};
scanf("%s", input);//不能加&
for(int i = 0; i < 5; i++) {
printf("%c ", input[i]);
}
printf("\n");
return 0;
}
补充说明(Supplement):