Pointer and array
1.How is memory laid out for a program?
Memory is divided into blocks of a certain size (32-bits or 64-bits depending on the OS)
Each block has a specified address
This means every location in memory can be accessed by using its address
變數是參照某位置, 值是儲存該位置的值
pointer是指向某位置, 值是儲存該位置
int radius = 25;
int *rasdiudPtr = &radius;
int *otherRsdiudPtr;
otherRsdiudPtr = rasdiudPtr;
int r = *rasdiudPtr;
printf("%u\n", &radius); //123FF
printf("d\n", *&radius); //25
printf("%d\n", *rasdiudPtr); //25
printf("%u\n", rasdiudPtr); //11DA
printf("%u\n", &radiusPtr); //123FF
printf("%u\n", &otherRsdiudPtr); //AB24
2.Why pointer need a type?
How mush space does stuff occupy
Integer: 4 bytes
Float: 4 bytes
Char: 1 bytes
3.Arrays in C are actually pointers
Array variables are simply pointers
int *: arr is a pointer to an integer and it points to the address location of the very first element in the integer array
int arr[4] = {1, 2, 3, 4};
int *intptr = arr;
intptr++;
4.Problem 1
int length = 10;
int breadth = 5;
int *length_ptr = &length;
int *breadth_ptr = &breadth;
printf("%d\n", *length_ptr); // 10
printf("%d\n", *breadth_ptr); //5
5.Problem 2
int length = 10;
int breadth = 5;
int *length_ptr = &length;
int *breadth_ptr = &breadth;
printf("%u\n", length_ptr); // OX7F
printf("%u\n", breadth_ptr); //OX77
6.Problem 3
int length = 10;
int breadth = 5;
int *length_ptr = &length;
int *breadth_ptr = &breadth;
int *test = length_ptr;
*test = 25;
printf("%d\n", length); //25
printf("%d\n", breadth); //5
7.Problem 4
int length = 10;
int breadth = 5;
int *length_ptr = &length;
int *breadth_ptr = &breadth;
int *test = length_ptr;
*test = 25;
printf("%d\n", length); //25
printf("%d\n", breadth); //5
test = breadth_ptr;
*test = 20;
printf("%d\n", length); //25
printf("%d\n", breadth); //20
Last updated