C语言学习9

来源:互联网 发布:韩顺平java spring视频 编辑:程序博客网 时间:2024/05/17 02:37

今天学习了数组与指针,指针与数组

先对内容进行了一下铺垫,

void main1(int *p)

{

  int *p1 = p//&p;        //在这里赋值给*p1的值是p或&p的区别,如果是p的话最后传入main函数的值会进行改变,这原理主要是通过对地址进行数据更改,&p就不会被改变了,

//因为&p相当于重新定义了一个新的地址,所以不会对传入进来的数值的地址进行更改

*p1 = 100;

}

void main2(int *p)

{

  int **p2 = &p;   //在这里传入的数值是会被改变的,原理和main1当中传入p是一样的,不过是对变量的地址上的值的地址进行改动,最后输出的结果也就会改变了

**p2 = 200;

}

void main()

{

int a = 2;

int *p = &a;

main1(p);//main2(p);

printf("%d",a);

}

还通过对存储指针的类型进行了讲解,想int a = 10;char *p = &a;这种情况下的输出结果*p是不等于10的,存储指针必须类型要一致,不然很容易出现错误,

下午就讲的数组的用指针取得二维数组的值,主要有以下几种

p = &a将变量a的地址赋给p

p = array将数组array首地址赋给p

p = &array[i]将数组元素的地址赋给p

p = &a[i]+j将数组的第i行第j列赋给p

p1 = p2将指针p2地址赋给p1

只要把赋值给搞明白其实还是很容易理解的,除开赋值之外就是和数组的运用没什么差别了,下午老师也花费了很多的心血把指针的取值进行反复的对比与演练,把数组与数组的关系讲的非常的透彻,主要还是得将取值的思路要清晰

指针对一维数组的取值a[]={1,2,3,4};

p = &(a+i),i是数组的下标取值

数组的第一个元素一般表示a[0],它的地址p1= &a[0],为了方便也可以写成p1 = &(a+0),然后后面的元素就在0的基础上进行增加,写成p = &(a+i)了

针对二维数组的取值a[][3] = {1,2,3,4,5,6,7,8,9};

p=&(a[i]+j);i是数组行的下标,j是数组列的下标

这个也可以通过一维数组的基础上再进行扩展,每行可以当成一维数组当中第一个值的取值p1=&a[0],每行之后就可以在a[i]的后面进行增加数值所在的列数地址p1 = &(a[0]+0),在多行或多列的时候就可以直接在p1的基础上进行增加了,写成p = &(a[i]+j),


0 0
原创粉丝点击