c语言复习2值指针实战


2015阿里巴巴招聘在线笔试试题_数据研发工程师

题目:

(2) 已知inta[]={1,2,3,4,5};int*p[]={a,a+1,a+2,a+3};int**q=p;表达式* (p[0]+1) +**(q+2)的
值是 _。
A.5
B.6
C.7
D.8
E.4
F.9

分析:p为指针数组,每一组的开始分别是指向 a,a+1,a+2,a+3所代表的地址的指针,比如p[0]=a=&a[0],p[1]=a+1=&(a[1])

* (p[0]+1)为*p[0][1],即a[1],为2

q=p,q为指针的指针,**(q+2)为p[2][0]的值,,即a[2],为3


代码:

#include <stdio.h>
void ali2()
{
     printf("Hello ali2\n");
	 int a[]={111,2,3,4,5};
	 int *p[]={a,a+1,a+2,a+3};
	 int **q=p;
	 int value=*(p[0]+1)+ **(q+2);
     printf("\n%d\n",value);
	 printf("\n%d\n",*(p[0]+1));
	 printf("\n%d\n",**(q+2));
	// return 0;
}


结果:

Hello ali2

5

2

3
Press any key to continue

故验证了前面的分析。


更详细分析:

#include <stdio.h>
void ali2()
{
	printf("Hello ali2\n");
	int a[]={1,2,3,4,5};
	int *p[]={a,a+1,a+2,a+3};
	int **q=p;
	int value=*(p[0]+1)+ **(q+2);
	printf("value=%d\n",value);
	printf("*(p[0]+1)=%d\n",*(p[0]+1));
	printf("**(q+2)=%d\n",**(q+2));

	
	printf("--------\n");
	for(int i=0;i<=3;i++){
		printf("**(q+%d)=%d\n",i,**(q+i));
	}
	printf("--------\n");
	for(int j=0;j<=4;j++){
		printf("*(*(q+0)+%d)=%d\n",j,*(*(q+0)+j));
	}
	printf("--------\n");
	for(int j1=0;j1<=3;j1++){
		printf("*(*(q+1)+%d)=%d\n",j1,*(*(q+1)+j1));
	}
	
	printf("--------\n");
	for(int j2=0;j2<=2;j2++){
		printf("*(*(q+2)+%d)=%d\n",j2,*(*(q+2)+j2));
	}
	
	printf("--------\n");
	for(int j3=0;j3<=1;j3++){
		printf("*(*(q+3)+%d)=%d\n",j3,*(*(q+3)+j3));
	}
	/*
	for(int k=0;i<=3;k++){
	for(int j=0;j<=1;j++){
			 printf("*(*(q+%d)+%d)=%d\n",k,j,*(*(q+k)+j));
			 }
}*/
	// return 0;
}

输出:

Hello ali2
value=5
*(p[0]+1)=2
**(q+2)=3
--------
**(q+0)=1
**(q+1)=2
**(q+2)=3
**(q+3)=4
--------
*(*(q+0)+0)=1
*(*(q+0)+1)=2
*(*(q+0)+2)=3
*(*(q+0)+3)=4
*(*(q+0)+4)=5
--------
*(*(q+1)+0)=2
*(*(q+1)+1)=3
*(*(q+1)+2)=4
*(*(q+1)+3)=5
--------
*(*(q+2)+0)=3
*(*(q+2)+1)=4
*(*(q+2)+2)=5
--------
*(*(q+3)+0)=4
*(*(q+3)+1)=5
Press any key to continue


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值