请看以下代码:
#include <stdio.h>
int main(int argc, char const *argv[])
{
int n;
int i = scanf("%d", &n);
printf("%d\n", i);
int j = scanf("%d", &n);
printf("%d\n", j);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
假设我n第一次输入一个字符串,scanf会返回0;但是,为什么它不允许我n第二次输入值并且j是自动的0?n即使我第一次输入了错误的值,我应该怎么做才能让它允许我再次输入一个值?
我使用以下代码将数组传递给函数并在调用该函数之前和之后打印其大小:
#include <stdio.h>
int passing_array(int array[]) {
int size = sizeof(array);
printf("The size after passing: %d\n", size);
}
int main () {
int a[] = {1, 2, 3};
int size = sizeof(a);
printf("The size before passing: %d\n", size);
passing_array(a);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
运行代码后,我得到了一个奇怪的结果:
通过前的尺寸:12
通过后尺寸:8
我的问题是:为什么数组的大小从12变成8?