关于C语言指针的选择题
7.若有说明:int*p1,*p2,m=5,n;以下是正确赋值语句的选项是【】。(A)p1=&m;p2=&p1;(B)p1=&m;p2=&n;*p1=*p2;(C)p1=...
7. 若有说明: int *p1, *p2, m=5,n; 以下是正确赋值语句的选项是【 】。
(A) p1=&m;p2=&p1; (B) p1=&m;p2=&n; *p1= *p2;
(C) p1=&m;p2=p1; (D) p1=&m; *p2 = *p1 ;
8. 执行以下程序段后,m的值是【 】。
static int a[ ] = {7,4,6,3,10};
int m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k++)
m=(*(ptr+k)<m)?*(ptr+k):m;
(A) 10 (B) 7 (C) 6 (D) 3
10. 执行以下程序段后,s的值为【 】。
static int a[ ] = {5,3,7,2,1,5,4,10};
int s=0, k;
for(k=0;k<8;k+=2)
s += *(a+k);
(A) 17 (B) 27
(C) 13 (D)无确定值
11. 若有说明语句:int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是【 】。
(A) i = *(*(x+1)+1); (B) i = x[1][1];
(C) i = *(*(x+1)); (D) i = *(x[1]+1); 展开
(A) p1=&m;p2=&p1; (B) p1=&m;p2=&n; *p1= *p2;
(C) p1=&m;p2=p1; (D) p1=&m; *p2 = *p1 ;
8. 执行以下程序段后,m的值是【 】。
static int a[ ] = {7,4,6,3,10};
int m,k,*ptr;
m=10;
ptr=&a[0];
for(k=0;k<5;k++)
m=(*(ptr+k)<m)?*(ptr+k):m;
(A) 10 (B) 7 (C) 6 (D) 3
10. 执行以下程序段后,s的值为【 】。
static int a[ ] = {5,3,7,2,1,5,4,10};
int s=0, k;
for(k=0;k<8;k+=2)
s += *(a+k);
(A) 17 (B) 27
(C) 13 (D)无确定值
11. 若有说明语句:int i, x[3][4];则不能将x[1][1]的值赋给变量i的语句是【 】。
(A) i = *(*(x+1)+1); (B) i = x[1][1];
(C) i = *(*(x+1)); (D) i = *(x[1]+1); 展开
6个回答
展开全部
首先怀疑你的程序有笔误,估计你把point( p ) 写成了 point()了
这样的话,你的题目就变成这样了.
----------------------------------------------------------------------
point(char *p)
main()
{
char b[4]={‘a',‘b',‘c',‘d’},*p=b;
point( p );
printf(“%c\n”,*p);
程序运行结果是:?
----------------------------------------------------------------------
先简单说明一下指针:指针就是变量的地址。如char *p;这个p就是一个指针(地址)。*p就是这个地址里放的变量(字符)
这个问题的关键在point(char *p)这个函数,其中(char *p)的p为形参(就是形式的参数)。可以把这个函数改为point(char *tmp_p)结果是一样的,但是更容易理解了。
在main函数中,p=b。而b是一个数组名,b也是{‘a',‘b',‘c',‘d’}这个数组的首地址。这个首地址里放的字符就是‘a’,所以*p就是‘a’。调用point( p );后p的值没有任何变化,所以说*p是‘a’;为什么说调用point( p );后,p没有任何变化呢?
前面把point(char *p)改为point(char *tmp_p)了。
其实调用point(tmp_p);的过程是这样的:
tmp_p = p;
tmp= tmp+3;
这样可以看出变化的是tmp, p没有任何变化。所以p这个地址没有变,所以p这个地址(也就是说数组b的首地址)里放的还是‘a’。
另外,tmp_p这个变量的生存周期就是point( p )函数的执行周期。关键要明白main函数中的p和point(char *p)中的p不是一个指针(变量),是两个指针(变量)。在调用point( p )函数的时候把main中的p赋值给了point(char *p)中的p。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
首先怀疑你的程序有笔误,估计你把point( p ) 写成了 point()了
这样的话,你的题目就变成这样了.
----------------------------------------------------------------------
point(char *p)
main()
{
char b[4]={‘a',‘b',‘c',‘d’},*p=b;
point( p );
printf(“%c\n”,*p);
程序运行结果是:?
----------------------------------------------------------------------
先简单说明一下指针:指针就是变量的地址。如char *p;这个p就是一个指针(地址)。*p就是这个地址里放的变量(字符)
这个问题的关键在point(char *p)这个函数,其中(char *p)的p为形参(就是形式的参数)。可以把这个函数改为point(char *tmp_p)结果是一样的,但是更容易理解了。
在main函数中,p=b。而b是一个数组名,b也是{‘a',‘b',‘c',‘d’}这个数组的首地址。这个首地址里放的字符就是‘a’,所以*p就是‘a’。调用point( p );后p的值没有任何变化,所以说*p是‘a’;为什么说调用point( p );后,p没有任何变化呢?
前面把point(char *p)改为point(char *tmp_p)了。
其实调用point(tmp_p);的过程是这样的:
tmp_p = p;
tmp= tmp+3;
这样可以看出变化的是tmp, p没有任何变化。所以p这个地址没有变,所以p这个地址(也就是说数组b的首地址)里放的还是‘a’。
另外,tmp_p这个变量的生存周期就是point( p )函数的执行周期。关键要明白main函数中的p和point(char *p)中的p不是一个指针(变量),是两个指针(变量)。在调用point( p )函数的时候把main中的p赋值给了point(char *p)中的p。
这样的话,你的题目就变成这样了.
----------------------------------------------------------------------
point(char *p)
main()
{
char b[4]={‘a',‘b',‘c',‘d’},*p=b;
point( p );
printf(“%c\n”,*p);
程序运行结果是:?
----------------------------------------------------------------------
先简单说明一下指针:指针就是变量的地址。如char *p;这个p就是一个指针(地址)。*p就是这个地址里放的变量(字符)
这个问题的关键在point(char *p)这个函数,其中(char *p)的p为形参(就是形式的参数)。可以把这个函数改为point(char *tmp_p)结果是一样的,但是更容易理解了。
在main函数中,p=b。而b是一个数组名,b也是{‘a',‘b',‘c',‘d’}这个数组的首地址。这个首地址里放的字符就是‘a’,所以*p就是‘a’。调用point( p );后p的值没有任何变化,所以说*p是‘a’;为什么说调用point( p );后,p没有任何变化呢?
前面把point(char *p)改为point(char *tmp_p)了。
其实调用point(tmp_p);的过程是这样的:
tmp_p = p;
tmp= tmp+3;
这样可以看出变化的是tmp, p没有任何变化。所以p这个地址没有变,所以p这个地址(也就是说数组b的首地址)里放的还是‘a’。
另外,tmp_p这个变量的生存周期就是point( p )函数的执行周期。关键要明白main函数中的p和point(char *p)中的p不是一个指针(变量),是两个指针(变量)。在调用point( p )函数的时候把main中的p赋值给了point(char *p)中的p。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7、c
8、d
10、A
11、C
8、d
10、A
11、C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
C
D
A
C
D
A
C
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
7 C 8 D 10 A 11 C
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询