C语言的指针函数和数组0809

C语言的中的指针变量具有高度的灵活性,它可以作为函数的参数的来使用。
函数返回值 函数名(。。。,类型名,*指针名,。。。);
也就是简单的将地址赋给函数作为函数的参数即可。特别注意的是,当函数参数为为指针,若实参为变量时提供的变量的地址,需要使用:&变量名。同样,当函数的形参为指针,若实参为数组名(数组名就是数组的首地址),

一维数组和指针

数组名就是数组的首地址。应为是数组的内容就是一个地址。
“”*指针名“”的表达方式就是变量的另外一个名字,数组也可以用指针表达,首先对比下变量的地址赋值,与数组名赋值给指针变量。

int i,*p=&i;   //变量使用去地址,“&”用来取地址,赋值给指针
int a[10],*p=a;//数组直接把名字赋值给指针

可以看到,数组的首地址是可以赋值给指针变量的。、
数组的声明 类型名 数组名[长度];

通过指针应用数组元素

方法一:普通引用法—-直接访问数组的某个元素

int a[20];
int *p;
p=&a[5];  //取得元素的第6个元素
*p=10//给第6 个元素赋值为10

这样只能给数组的中的一个元素赋值,若果要给元素中所有的元素赋值,可以用循环的赋值方法。
还有一点值得注意的是p=a; yu p=&a[0];等价这个语句的作用的是取得元素的守地址。
方法二:递加引用
可以用增量来实现普通方法的赋值。

int a[20];
int i;
p=a;  //取得元素的首地址。
*(p+5)=10//作用是给第六个元素赋值为10

还有就是可以用这个方法来实现给元素赋值为1

int a[20];
int i;
p=a; 
for(int i=0;i<=20;i++,p++){
*(p+i)=1;
}

二维数组和指针

二维数组的首地址
同一维数组一样,二维数组的数组名就是二维数组的首地址,首地址表达了二维数组的基本位置,简单的可以把二维数组当多个一位数组来使用。
二维数组的元素的地址
某元素的地址=首地址+某元素的行下标*行元素个数+列下标

重点:指针变量如何赋值,指针变量如何访问数组中的某个元素,下面写一个代码。来实现访问数组的最后一个元素。

#include<stdio.h>
void main (){
int a[3][2]={{0,0},{0,0},{0,0}};
int *p;
p=a[0];  //等加与p=&a[0][0];
*(p+2*2+1)=9;   //*(p+5)=9;取得元素的最后一位元素
printf("%d",a[2][1]);
}

结果为9;
使用指针来访问二维数组中第i行还有第J列的元素
a[i][j]对应的(p+行下标i 行元素的个数 +行下标j),
a[0][0]对应的是(p+0*2+0) 即 (p +0 ); //表示第一个元素
a[0][1]对应的是(p+0*2+1) 即 (p +1 ); //表示第二个元素
a[1][0]对应的是(p+1*2+0) 即 (p +2 ); //表示第三个元素
a[1][1]对应的是(p+1*2+1) 即 (p +3 ); //表示第四个元素
a[2][0]对应的是(p+2*2+0) 即 (p +4 ); //表示第五个元素
a[2][1]对应的是(p+2*2+1) 即 (p +5 ); //表示第六个元素

这个很重要的,借鉴我们班长的,哈哈哈哈哈哈哈哈
换行就是*(a + i)
对应的取值形式就是 ( (a +i))

换列就是*a + i
对应的取值形式就是 *( *a + i)

即换行又换列就是*(a + i) + j
对应的取值形式就是( (a + i) + j)

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值