第五章单元测试
假设有下面定义语句:
float a[10];
float *p=a;
则p++相当于是加上()个字节
以下哪个定义中的p不是指针,请选择恰当的选项( ):
以下程序的执行结果是( )。
int main()
{
int a, b, k = 4, m = 6, * p1 = &k, * p2= &m;
a = p1 == &m;
b = (-*p1)/(*p2) + 7;
printf("%d, %d", a, b);
return 0;
}
下面程序的运行结果是()。
#include<stdio.h>
int main(void)
{
int x[5] = { 2, 4, 6, 8, 10 }, *p, **pp;
p = x;
pp = &p;
printf(“%d ”, *(p++));
printf(”%d”, **pp);
return 0;
}已有如下代码:
char a[5],*p=a;
则下面选项中正确的赋值语句是()
以下程序的运行结果是()
#include <stdio.h>
sub (int x,int y,int *z)
{
*z=y-x;
}
int main ( )
{
int a,b;
sub(10,5,&a);
sub(7,a,&b);
printf("%d,%d",a,b);
return 0;
}- 如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。
若有定义:int *p[3]; 则以下叙述中正确的是( )。
若已定义int num[10];,则下面表达式中不表示num[1]的地址的是()。
对于如下说明,语法和语义都正确的赋值是_____。int c, *s, a[]={1, 3, 5};
A:sizeof(float) B:sizeof(float*) C:1 D:sizeof(a)
答案:sizeof(float)
A:char *p[6]; B:给出的三项中,p都是指针 C:char **p; D:char (*p)[10];
A:0, 7 B:1, 5 C:-1, 7 D:0, 5
A:4 4 B:4 6 C:2 4 D:
A:p=“abcd” B:a=“abcd” C:*a=“abcd” D:*p=“abcd”
A:-5, -12 B:5, -2 C:5, 2 D:-5,-2
A:m = &n; B:*p = *&n; C: D:m = **p;
A:定义了一个名为*p的整型数组,该数组含有三个int类型元素 B:定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针 C:定义了一个基类型为int的指针变量p,该变量具有三个指针 D:定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
A:&num[0]+1 B:&num[1] C:num+1 D:num++
A:c=*s; B:s[0]=a[0]; C:c=a; D:s=&a[1];