1.语句int *p;
和printf("%d",*p);
中的*p含义相同
F int *p; 这个是 定义一个指针变量 p,这里 星号 只是说明 变量 p 是一个指针。
printf(“%d”, *p);
这里的 *p 是指 指针变量 p 所指向 内存地址的内容;
2.下列程序段的输出是____。
int c[]={1, 3, 5};
int *k=c+1;
printf("%d", *++k);
A.3
B.5
C.4
D.6
答案:B 注意k为指针变量,++k为c的第三个元素
3.以下程序的输出结果是( )。
int fun(char s[ ])
{
int n = 0;
while ( *s <= '9' && *s >= '0'){
n = 10 * n + *s - '0';
s++;
}
return(n);
}
int main( )
{
char s[10]={'6', '1', '*' , '4', '*', '9', '*', '0', '*'};
printf("%d\n", fun(s));
return 0;
}
A.61
B.61490
C.5
D.9
答案:A 当s=*时停止循环
4.如果有定义:int m, n = 5, *p = &m; 与m = n 等价的语句是 () 。
A.m = *p;
B.m = &n;
C.m = **p;
D.*p = *&n;
答案:D *p为m的值
5.下列语句定义px
为指向int
类型变量x
的指针,正确的是()。
A.int x, *px = x;
B.int x, *px = &x;
C.int x, px = x;
D.int *px = &x, x;
答案:B。先定义x,再指向x
6.若有说明: int *p1, *p2, m=5, n; ,以下均是正确赋值语句的选项是
A.p1=&m; *p1=*p2;
B.p1=&m; *p2=*p1;
C.p1=&m; p2=&p1;
D.p1=&m; p2=p1;
答案:D 指针必须先指向地址,再修改内容,否则可能会使系统崩溃,D只使p2的地址改变了,而B使p2的内容变为了m。