我写了一个C代码,它接受一个整数数组,并给数组中的每个值加1。然而,我得到了一个分段错误。
下面是代码:
#include <stdio.h>
void add1(int a[]){
int i;
for(i=0;i<sizeof(a);i++){
a[i]=a[i]+1;
}
}
void main(){
int arr[10]={1,2,3,4,5,76,7,5,3};
add1(arr);
int i;
for(i=0;i<sizeof(arr);i++){
arr[i]=arr[i]+1;
printf("%d ",arr[i]);
}
}
1条答案
按热度按时间zujrkrfu1#
我可以在您的计划中确定三个问题,并按严重程度依次列出
1.(代码错误)数组大小与数组对象的大小不同
假设sizeof将返回数组大小(元素的数量)是错误的。sizeof用于计算数据类型的大小,在本例中是一个大小为10的整数数组。
你应该做的
这意味着数组对象的大小是单个数组元素大小的倒数。
1.(功能错误)将数组传递给函数时,数组退化为指针。
因此,
sizeof
将返回整数指针的大小,而不是数组的大小。1.(样式)数组的初始化不需要显式数组大小
应该是