notes/education/software development/ECE1400/Chapter 12 Exercises.md
2024-10-28 11:20:14 -06:00

1.4 KiB

  1. Suppose that the following declarations are in effect:.... a. 14 b. 34 c. 4 d. true e. false

  2. Suppose that high, low, and middle are all pointer variables of the same type, and the low and high point to elements of an array. Why is the following statement illegal, and how could it be fixed?

middle = (low + high) / 2

The above statement is illegal because you can't add an int * to an int *. The below operation is legal because you can perform pointer subtraction, and because low is defined on the left hand side of the equation, then adding a long to a pointer is valid.

middle = low + (high - low) / 2;
  1. What will be the contents of the a array after the following statements are executed?
{10, 9, 8, 7, 6, 5, 4, 3, 2, 1}
  1. Suppose that a is a one dimensional array and p is a pointer variable. assuming that the assignment p = a has just been performed, which of the following expressions are illegal because of mismatched types? Of the remaining expressions, which are true (have a nonzero value)? The following expressions are illegal because of mismatched types:
  • (a) p == a[0] - Comparison between int * and int The rest of the expressions are true.
  1. Rewrite the following function to use pointer arithmetic...
void store_zeros(int *a, int n) {
    for (int i = 0; i < n; i++) {
	*(a + i) = 0;
    }
}