关注

C复习Day6(指针)

#技术笔记

1.传入参数:只负责把信息带入,不负责把信息带出。

传入传出参数:类似指针,可以把信息带入,可以把信息带出。

2.数组名可以看做是一个指向数组连续空间的首地址;数组名使用起来像是普通指针,但是不能修改指向。有些情况下数组名不能被当成首指针对待,例如使用sizeof()数组名的时候。

3.当一个数组作为参数传给一个函数时,数组名隐式转换(也称退化)为指向其首元素的指针

4.后缀法区分数组指针和指针数组。

数组指针,是指针(后缀),指向数组的指针,偏移量是整个数组大小的空间。例如:int (*p)[1];//就是数组指针,代码区分的话,我是看先和[]结合还是先和*结合,这个有小括号先和*结合,说明自己是个指针, 指针指向数组,所以是数组指针。

指针数组,是数组,数组中装的是指针(类型为自己所定义好的)。例如:int *p[1]; //这就是指针数组,同理代码层面的理解,先和[]结合,在和*结合([]结合性 > *的结合性),就是先是数组,称为指针数组.

5.指针常量与常量指针

指针常量:代码形式有2const int *p; int const *p; 就从右向左读(指针常量),作用就是const修饰了*p,*p所指的内容就不能更改了,但可以改变指针的指向。

常量指针:代码形式 int * const p; 整体const修饰p,也就是指针不能修改指向了,但可以修改指针所指的内容,如同其名常量指针。

还有一种const int* const p; 作用2个都不能更改了,指针的指向和所指向的指。

6.二维数组的指针理解。

void test() 
{
	int matrix[5][6] = 
	{
	{1,2,3,4,5,6},
	{7,8,9,10,11,12},
	{13,14,15,16,17,18},
	{19,20,21,22,23,24},
	{25,26,27,28,29,30}
	};

	// 二维数组里面的一个元素是,一维数组。 
	// 二维数组名是: 数组指针。    int[5]

	// 数组名代表什么。 关键! 
	// matrix[2][3]   ==== *(*(matrix + 2) + 3)

	// 数组名 -> matrix: 类型:数组指针。  值: 指向1 (不论是啥都是指向1的地址值0

	// matrix + 2: 类型: 数组指针。 值: 指向 13

	// *(matrix + 2): 类型: 数组。 (普通指针) 值: 指向13

	// *(matrix + 2) + 3 类型: 指针。 值: 指向16

	// *(*(matrix + 2) + 3): 类型: int  值 16
}

转载自CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/cen__y/article/details/159893105

评论

赞0

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--