Changing array inside function in C

前端 未结 7 1995
伪装坚强ぢ
伪装坚强ぢ 2020-12-01 08:40

I am learning C and confused why a array created in the main wont change inside the function, i am assuming the array passed is a pointer, and changing the pointer should\'v

7条回答
  •  余生分开走
    2020-12-01 09:21

                #include
                #include
    
                // Print on console the array of int
                void print(int *array,int length)
                {
                    int i;
                    for(i = 0 ; i < length ; i++)
                        printf("%d ", array[i]);
                    printf("\n");
                }
    
                // Change the pointer of the array
                void change(int **array,int length)
                {
                    int i;
                    int *ar;
                    ar = (int *)malloc(sizeof(int *) * length);
                    for(i = 0 ; i < length ; i++)
                        ar[i] = 1;
                    (*array) = ar;
                }
    
                int main(){
                    int i, length = 10;
                    int *array;
                    array = (int *)malloc(sizeof(int *) * length);
    
                    for (i = 0 ; i < length ; i++)
                        array[i] = i * 10;
                    printf("Before:");
                    print(array, length);
                    change(&array, length);
                    printf("After:");
                    print(array, length);
    
                    return 0;
                }
    

提交回复
热议问题