二维数组与指针(int型)

泪目了,泪目了!!!

花费大力气才学会

先看看int 型

 
 #include<stdio.h>
 int main()
 {
 	int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
 	printf("%p\n",a[0]);//0行0列的地址 
 	printf("%p\n",a[0]+1);//0行1列的地址 
 	printf("%p\n",*(a+0));//0行0列的地址 
 	printf("%p\n",*(a+1));//1行0列的地址 
 	printf("%p\n",*(a+1)+1);//1行1列的地址 
 	printf("%p\n",*a+2);//0行2列的地址 
 	printf("%p\n",*(a+2));//2行0列的地址 
 	printf("%p\n",&a[1]);//1行0列的地址 
 	printf("%p\n",&a[0]+2);//0行2列的地址
 	printf("%p\n",&a[0][2]);//0行2列的地址 
 	printf("%p\n",a);//0行0列的地址
 	/*
	a[i]指i行0列的地址
	a[i]+j指i行j列的地址
	*(a+i)指i行0列的地址
	*(a+i)+j指i行j列的地址 
	*a+i指0行i列的地址 
	&a[i]指i行0列的地址
	&a[i]+j指i行j列的地址
	&a[i][j]指i行j列的地址 
	*/
	
	//行指针: a+i                 &a[i]    
	//列指针:*(a+i)+j               a[i]+j             &a[i][j] 
	//行指针加*变为列指针;列指针加&变为行指针  

	//优先级 :()>[]>*
	
 	return 0;
 }
 
 #include<stdio.h>
 int main()
 {
 	int a[4][4]={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16};
	int (*p)[4]; 
	p=a; //只能等于行指针 
	
	printf("%p\n",p);//0行首地址,行指针 
	printf("%p\n",p+1);//1行首地址,行指针
	printf("%p\n",p[1]);//1行0列的地址,列指针 
	printf("%p\n",p[0]+1);//0行1列的地址,列指针 
	
	printf("%d\n",*(p[1]));//1行0列的值,列->值 
	printf("%d\n",*(p[0]+1));//0行1列的值,列->值
	
	printf("%d\n",**p);//0行首值,行->列->值 
	printf("%d\n",**(p+1));//1行首值,行->列->值 
	
	//行指针+* -> 列指针; 列指针+* -> 值;行指针+* -> 列指针 
	
 	return 0;
 }

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值