У вас есть некоторые проблемы. Сначала вы пытаетесь передать int*
параметру типа int**
. Это не сработает. Дайте ему тип int*
:
void addtwo(int *arr){
int i=0;
for(;i< sizeof(arr)/sizeof(int);i++){
arr[i] = arr[i] + 2;
}
}
Затем вам нужно передать размер в дополнительном аргументе. Проблема в том, что когда вы передаете массивы, вы действительно передаете только указатель (компилятор создаст временный указатель, который указывает на первый элемент массива). Так что вам нужно следить за размером самостоятельно:
void addtwo(int *arr, int size){
int i=0;
for(;i<size;i++){
arr[i] = arr[i] + 2;
}
}
int main(void) {
int myarray[] = {1,2,3,4};
addtwo(myarray, sizeof myarray / sizeof myarray[0]);
}
Теперь это будет работать. Также поместите тип возврата перед ними. Некоторые компиляторы могут отклонять ваш код, так как он больше не соответствует последнему стандарту C и долгое время считался устаревшим (исключение типа возврата было способом, который вы кодировали со старым K & R C).