关于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);
展开
 我来答
ku5y7xct0
2011-06-08 · TA获得超过431个赞
知道答主
回答量:592
采纳率:100%
帮助的人:323万
展开全部

首先怀疑你的程序有笔误,估计你把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。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
愚子珍Tg
2011-06-11 · TA获得超过1883个赞
知道小有建树答主
回答量:1827
采纳率:0%
帮助的人:935万
展开全部
首先怀疑你的程序有笔误,估计你把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。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
秋枫5410
2011-06-05 · TA获得超过808个赞
知道小有建树答主
回答量:546
采纳率:0%
帮助的人:199万
展开全部
7、c
8、d
10、A
11、C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
黑会峰
2011-06-07 · 超过13用户采纳过TA的回答
知道答主
回答量:41
采纳率:0%
帮助的人:34.6万
展开全部
C
D
A
C
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
御含灵9r
2011-06-05 · TA获得超过4157个赞
知道大有可为答主
回答量:3007
采纳率:0%
帮助的人:2681万
展开全部
7 C 8 D 10 A 11 C
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式