編程小白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

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