Entrance Exams
Govt. Exams
When &y is passed to a function expecting a pointer parameter, the address is passed. Changes via pointer dereference affect the original variable.
The parentheses around *ptr indicate ptr is a pointer. It points to a function that takes two int parameters and returns an int.
int arr[5] = {1,2,3,4,5};
int *p = arr;
p += 2;
printf("%d", *p);
p points to arr[0]. After p += 2, p points to arr[2] which contains value 3. Pointer arithmetic moves by element size.
Comparing pointers with NULL is valid. Comparing unrelated pointers or subtracting pointers from different arrays is undefined behavior.
After allocating memory for pointers, each pointer (row) must be allocated memory individually in a loop before accessing arr[i][j].
p is not initialized to valid address. Dereferencing causes undefined behavior (writing to random memory location).
Pointers of same type can be compared using <, >, ==, !=. Comparing with integers or different types is invalid.
Passing address allows function to modify original variable. *x = 20 changes the value at that address.
Dangling pointer occurs when memory is freed but pointer still references that location. This causes undefined behavior.
const after * means the pointer address cannot change, but the data it points to can be modified.