我想知道为什么这个我只为练习而创建的程序不能正常工作。该程序要求输入一个名为" array"的5个数字。还有2个VOID函数,一个用于获取数字,一个用于cicle和scanf指令,另一个用于打印数组中的5个数字。问题是印刷的数字只是第一次.4。错误的是什么? 附:对不起我的无知,但我是一个初学者。这是代码
#include <stdio.h>
#include <stdlib.h>
void
array_print(int array[],size_t size){
int i;
for(i=0;i<size;i++){
printf("%i ",array[i]);
}
}
void
get_num(int array[],size_t size){
int i;
for(i=0;i<size;i++){
scanf("%i",&array[i]);
}
}
int
main(){
int array[5];
size_t size;
size=sizeof(int);
printf("Insert 5 numbers: ");
get_num(array,size);
array_print(array,size);
return 0;
}
答案 0 :(得分:6)
在您运行程序的环境中,sizeof(int)
等于4
。
可以像
一样计算数组的大小size = sizeof( array ) / sizeof( int );
考虑运营商sizeof
返回的值的类型为size_t
。因此,最好将此类型用于数组的大小。
此外,您可以为数字5
引入清单常量。例如
#define N 5
并将数组声明为
int array[N];
或者如果编译器支持可变长度数组,则可以编写
int main( void )
^^^^^^^^^^^^^^^^
{
const size_t N = 5;
int array[N];
//...
答案 1 :(得分:0)
您执行代码的编译器的体系结构是32位,因此int的大小为32位= 4个字节。
size = sizeof(int)
将返回
size = 4
而你只能输入四个值。