Viết chương trình C để copy một mảng tới mảng khác dùng con trỏ

Các bước thực hiện để viết chương trình C:

1. Nhập vào kích thước sizevà các phần tử trong mảng đầu tiên source_arr. Khai báo một mảng đích dest_arr để lưu trữ các phần tử của source_array. 

2. Khai báo một con trỏ tới source_array và một con trỏ tới dest_array và một con trỏ end_ptr dùng để trỏ vào vị trí cuối mảng source_arr: 

   *source_ptr = source_array;

    *dest_ptr = dest_array;

                end_ptr = &source_arr[size-1]

3. Thực hiện việc sao chép các thành phần từ source_ptr sang desc_ptr: *desc_ptr = *source_ptr.

4. Tăng con trỏ source_ptr và desc_ptr lên 1.

5. Lặp lại bước 3 và 4 cho đến khi source_ptr tồn tại trong phạm vi bộ nhớ source_arr.

6. In cả 2 mảng ra màn hình

Code tham khảo của chương trình C:

/**
* C program to copy an array to another array using pointers
*/

#include <stdio.h>
#define MAX_SIZE 100 // Maximum array size

void printArray(int arr[], int size); /* Function declaration to print array */

int main()
{
int source_arr[MAX_SIZE], dest_arr[MAX_SIZE];
int size, i;

int *source_ptr = source_arr; // Pointer to source_arr
int *dest_ptr = dest_arr; // Pointer to dest_arr

int *end_ptr;

//Input size and elements in source array
printf("Enter size of array: ");
scanf("%d", &size);
printf("Enter elements in array: ");
for (i = 0; i < size; i++)
{
scanf("%d", (source_ptr + i));
}

// Pointer to last element of source_arr
end_ptr = &source_arr[size - 1];

// Print source and destination array before copying
printf("\nSource array before copying: ");
printArray(source_arr, size);

printf("\nDestination array before copying: ");
printArray(dest_arr, size);

//Run loop till source_ptr exists in source_arr memory range
while(source_ptr <= end_ptr)
{
*dest_ptr = *source_ptr;

// Increment source_ptr and dest_ptr
source_ptr++;
dest_ptr++;
}
/* Print source and destination array after copying */
printf("\n\nSource array after copying: ");
printArray(source_arr, size);

printf("\nDestination array after copying: ");
printArray(dest_arr, size);

return 0;
}
/**
* Function to print array elements.
*
* @arr Integer array to print.
* @size Size of array.
*/
void printArray(int *arr, int size)
{
int i;

for (i = 0; i < size; i++)
{
printf("%d, ", *(arr + i));
}
}