1.4 KiB
1.4 KiB
-
Suppose that the following declarations are in effect:.... a.
14
b.34
c.4
d.true
e.false
-
Suppose that
high
,low
, andmiddle
are all pointer variables of the same type, and thelow
andhigh
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;
- 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}
- Suppose that
a
is a one dimensional array andp
is a pointer variable. assuming that the assignmentp = 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 betweenint *
andint
The rest of the expressions are true.
- 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;
}
}