初识指针——1

① *p++ <=> *(p++)
	先引用p的值,实现*p的运算,然后再使p自增1
②还有*(++p):先使p加1,再取*p。
③++(*p):表示p所指向的值加1。
④*(p--):先对p进行“*”运算,再使p自减
a[0]+1  <=>   *(a+0)+1   都是&a[0][1]。
如若把*(a+1)+2写成*(a+1+2),后者变成*(a+3),相当于a[3]。
*(a[i]+j)与*(*(a+i)+j)是a[i][j]的值。
如果a是二维数组,则a[i]是一维数组名,他只是一个地址。
a+i,*(a+i),a[i]+j,*(a+i)+j都是地址 。
一个二维数组,a[0]是一维数组名,是一维数组中起始元素的地址,基类型:整形数据
  			 a是二维数组名,是二维数组的首行起始地址,基类型:一维数组
  	二者的纯地址相同
  
  若用一个指针变量pt来指向此一维数组:
  

				```
					int (*pt)[4];
				```
  1. 一维数组名指向列元素。
    在指向行的指针前面加一个*,就转换为指向列的指针;
    在指向列的指针前面加一个&,就成为指向行的指针;
    &a[0]   <=>   & *a   <=>   a;
    
int a[2][3]={1,2,3,4,5,6};
int (*p)[3];
p=a;
int a[3]={1,2,3};
int (*p)[3];
p=&a;

在第一个代码中,p是一个行指针,基类型是一维整形数组,(p+2)就转换为列指针,(*(p+2)+3)就是a[2][3]的值。

  • 可变格式输出函数
char *format;
format="a=%d,b=%f\n";
printf(format,a,b);

相当于

printf("a=%d,b=%f\n",a,b);

也可以用字符数组

char format[]="a=%d,b=%f\n";
printf(format,a,b);

但需注意 :“只能”采用在定义数组时初始化或逐个对元素赋值的方法,而不能用赋值语句对数组整体赋值。

新人,如有错误,请指正……
用的不熟练,格式有错误,将就一下,嘻嘻

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值