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));
}
}
0 Nhận xét