编程小白C语言题目练习6

题目要求

若有以下的定义:
int  a[]={1,2,3,4,5,6,7,8,9,10},  *p=a;

则值为3的表达式是(     )
(A)p+=2,  *(p++)        (B)p+=2,*++p        (C)p+=3,  *p++        (D)p+=2,++*p

思路分析 

引出一个数组元素,可以用:

下标法:如a[i]形式,a[2]=3

指针法:*(a+i)或者*(p+i)      *(p++)和*(++p)作用不相同,*(p++)是先取*p的值,然后使p+1,*(++p)是p+1,然后在取*p,如果p的初值为a(即&a[0],a[0]=1),*(p++)得到a[0]的值,而*(++p)得到a[1]的值

 举个例子

A选项中的表达式转化为代码

#include<stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
	p+=2;
	printf("*(p++)=%d\n",*(p++));
	return 0;
}

结果,A选项没问题

B选项

#include<stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
	p+=2;
	printf("*++p=%d\n",*++p);
	return 0;
}

结果,不等于3

C选项 

#include<stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
	p+=3;
	printf("*p++=%d\n",*p++);
	return 0;
}

结果 不等于3

D选项 

#include<stdio.h>
int main()
{
	int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
	p+=2;
	printf("++*p=%d\n",++*p);
	return 0;
}

结果不等于3

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章