指针与数组关系笔记

指针与数组

指针初始化时注意事项

  • 1.不能使用未经赋值的指针变量进行间接引用
int *p;
*p=100;         /*指针变量P未经赋值*/
  • 2.不能通过指定具体地址的方式对内存单元进行间接引用
int *p;
p=200;         /*不能直接指定内存单元的地址*/
  • 3.两个类型不同的指针间,不能直接赋值
int a,*p;
float x,*q;
p=&x;
q=&a;          /*指针的类型不同,不能直接赋值*/

指针与一维数组

  • 1.如果a是一维数组,那么a+i就是数组元素a[i]的地址,从而*(a+i)就代表数组元素a[i];
  • 2.如果a是一维数组,而指针变量p指向a[0],那么p+i就是数组元素a[i]的地址;从而*(p+i)就代表数组元素a[i];

说明:

  • 1.数组和指针变量是不是可以完全互换呢??? 当然不是,数组名是指针常量,而非指针变量,它始终指向数组的0号元素。
  • 2.一个指针可以与整形数据相加减;两个相同类型的指针可以相减、相比较,但不能相加。

指针与二维数组

1.用行数组名引用二维数组的元素 定义int a[i][j]

  • 1.既然a[i]是第i行的数组名,那么a[i]就是第i行0号元素a[i][0]的地址;
  • 2.a[i]+j就是数组a[i][j]的地址;
  • 3.从而*(a[i]+j)也就是数组元素a[i][j]。

2用二维数组名引用二维数组的元素

  • 1.a就是其0号元素a0的地址;
  • 2.a+i就是元素ai的地址,从而*(a+i)等价于a[i];
  • 3.因为a[i]是第i行0号元素a[i][0]的地址,所以*(a+i)就是第i行0号元素的地址;
  • 4.而*(a+i)+j就是数组元素a[i][j]的地址。
  • 5.从而*(*(a+i)+j)就是数组元素a[i][j].
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值