○ Key Takeaways from Week 2
- Learned the concept of arrays and array-based sequential lists.
- Studied 1D/2D array declarations, initialization, sparse matrix representation, and transpose matrices.
- Learned how strings are implemented and the role and danger of omitting the
\0
null character. - Understood how arrays behave when passed as function arguments.
- Covered structure definitions, declarations, operations, and nested structures.
- Learned about pointers and dynamic memory allocation.
○ Sequential List
- A list implemented using arrays.
- An array is a collection of elements of the same data type.
- Stored sequentially in memory, both logically and physically (addresses are also consecutive).
- Offers fast access via index but can be slow for insert/delete operations.
- Important to understand the abstract data type (ADT) concept of a list and how to implement it using arrays.
- Later, this will be compared with linked lists (pointer-based).
○ 1D Array
- A set of pairs. Accessing by index yields the corresponding value.
- Declared as
data_type array_name[size];
int A[6];
int A[6] = {1, 2, 3, 4, 5, 6};
int A[] = {1, 2, 3, 4, 5, 6};
-
A
holds the address of A[0]
. - Local variables in C are not auto-initialized to 0, so uninitialized values may contain garbage data.
○ 2D Array
- Declared as
data_type array_name[rows][columns];
-
int A[2][3];
creates a 2x3 matrix.
- Initialized like:
int A[2][3] = {{1,2,3}, {4,5,6}};
int A[2][3] = {1,2,3,4,5,6};
- Sparse matrices save space but make operations more complex.
- Represented as triplets:
{row, column, value}
- Transpose matrix: swaps rows and columns, useful when column-wise operations are needed.
○ Strings = Character Array + Null Terminator \0
- Example:
char S1[16] = "Hello World";
automatically adds \0
at the end. - Without
\0
, memory is read until a null byte is found—may cause garbage output or segmentation fault. - Use
strcpy()
or strcpy_s()
to initialize character arrays safely.
○ Passing Arrays to Functions
- C uses call-by-value, but arrays are passed by reference (by address).
- Changes inside the function affect the original array.
- Must also pass the size of the array explicitly.
○ Structure (struct) Basics
- Combines different data types under one unit.
- Must be defined before use.
typedef struct { int id; char name[20]; double score; } Student; Student a = {202403156, "Hong Gil-dong", 96.3}; a.id = 242403156; strcpy(a.name, "Hong Gil-dong");
- Use
.
to access members. -
strcpy()
is needed for character arrays (strings).
○ Struct Operations and Nested Structures
- Only assignment (
=
) is supported. Other operations like comparison (>
) are not allowed.
typedef struct { int month; int date; } Birthday; typedef struct { char name[20]; Birthday birthday; } Friend; Friend list[45];
○ Passing Structs to Functions
- Passed by value (copied), so changes inside the function don’t affect the original.
- Use pointers to modify original struct values.
○ Polynomial Representation
- Practice in storing and manipulating structured data.
- Store coefficients in arrays, usually in ascending order by degree:
-
int coef[] = {7, 5, 2, 3};
→ index 0 = constant, index 3 = highest degree term. - Easier coding and readability when using index = degree.
○ Pointer Basics
- A pointer holds the address of another variable.
- Use
*
to access or modify the value being pointed to. - Use
&
to get a variable's address. - Arrays act like pointers in many contexts.
○ Dynamic Memory Allocation
- Allocates memory at runtime, allows efficient use of memory.
-
malloc()
is used to request memory from the heap. - Always
free()
the memory to avoid memory leaks.
int *pi; pi = (int*)malloc(sizeof(int)); // use pi free(pi);
Top comments (0)