-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathpointer_basics.c
More file actions
42 lines (36 loc) · 1.62 KB
/
Copy pathpointer_basics.c
File metadata and controls
42 lines (36 loc) · 1.62 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
// Filename: pointer_basics.c
// Author: Sam Mansouri
// Date: 10/15/2025
// Description: Demonstrates pointer basics, custom memcpy, and struct usage in C.
// ===== Includes =====
#include <stdio.h>
#include <string.h>
#include "hwlib.h"
// Name: my_memcpy
// Description: Copies 'size' bytes from 'src' to 'dest' using uint8_t pointers
void my_memcpy(void* dest, const void* src, size_t size) {
// =================> TODO: Implement byte-by-byte memory copy using uint8_t*
uint8_t* d = dest;
const uint8_t* s = src;
while (size--) *d++ = *s++;
}
// Function: run_pointer_basics
// Description: Demonstrates pointer basics and custom memcpy
void run_pointer_basics() {
// Step 1
// =================> TODO: Declare and initialize an int[5] array
int int_array[5] = {10, 20, 30, 40, 50};
// =================> TODO: Declare and initialize a char[5] array
char char_array[5] = {'A', 'B', 'C', 'D', 'E'};
// =================> TODO: Print value and address of each element using a for loop
for(int i = 0; i < 5; i++) printf("int_array[%d] = %d, address = %p\n", i, int_array[i], (void*)&int_array[i]);
for(int i = 0; i < 5; i++) printf("char_array[%d] = %c, address = %p\n", i, char_array[i], (void*)&char_array[i]);
// Step 2
// =================> TODO: Declare source string and destination buffer
const char src[] = "Sam Mansouri";
char dest[20];
// =================> TODO: Use my_memcpy() to copy string
my_memcpy(dest, src, strlen(src) + 1); // +1 to copy the null terminator
// =================> TODO: Print copied string
printf("Copied string: %s\n", dest);
}