|
|
检测点8-6
1.简述C语言引入指针运算的意义。
答:指针运算的意义在于:
如果一个指针指向数组的第i个元素,在数组足够大的情况下,将这个指针和一个整数n相加,其结果是一个新的指针,指向数组的第i+n个元素。
相反地,如果一个指针指向数组的第i个元素,在数组足够大的情况下,将这个指针和一个整数n相减,其结果是一个新的指针,指向数组的第i-n个元素。
如果一个指针指向数组的某个元素,另一个指针指向同一个数组的另一个元素,则这两个指针相减的结果是上述两个元素下标的差值。
2.请分析下面的代码有什么问题:
signed char sc [8];
long int * p = & sc [0];
答:表达式& sc [0]的类型是指向signed char的指针,而对象p的类型是指向long int的指针,类型不匹配,不能初始化。
3.选择填空,给定以下代码片段:
signed char sc [8], * p = & sc [0];
long int la [8], * q = & la [0];
p ++; //S1
q ++; //S2
语句S1执行后,对象p所指向的内存位置同原来相比,移动了_A_字节的空间?语句S2执行后,对象q的值所指向的内存位置同原来相比,移动了_D_字节的空间?
A.1 B.2 C.8 D.sizeof (long int)
4.修改源文件c0805.c中的for语句,要求在访问数组元素时使用运算符+=。
参考答案:
# include <stdio.h>
# include <stddef.h>
int main (void)
{
int a [] = {205, 377, 69, 3, 5678,}, * p = & a [0];
for (size_t x = 0; x < sizeof a / sizeof a [0]; x ++)
printf ("%10d", * (p += 1));
printf ("\n");
}
|
|