指针总结
2022年 02月 24 日

BIGFISH

#include 
int main(void)
{
	//1.数组名字是首元素地址
	//2.p指向一个变量的地址,*p就是这个变量本身的值
	//3.(*p + n) = p[n]


	int a[2][3] = { { 5,4,9},{1,9,3} };
//1.	
	int(*p)[2][3] = &a;   //	*p == a; 
	*p == a; 
	printf("%d\n", (*p)[1][1]);  //9
    //printf("%d\n", p[1][1]);     //错误

//2.
	int(*k)[3]= &a[0];//or = a or  = &a[0] or k = a;   //k == a ;
	   //数组指针,指向含有三个元素的一维数组
	a == &a[0]; k == a;
	printf("%d\n", k[1][0]);    //1
	printf("%d\n", (*k )[4]);   //9
	printf("%d\n", (*(k + 1))[1]);//9    (*(k+n)[m] == a[n][m]
	printf("%d\n", *(k[1] + 1));  //9     *(k[n]+m) == a[n][m]
	printf("%p\n", &a[0]);   //000000A0A42FF5B8
	printf("%p\n", a);       //000000A0A42FF5B8


//3.
  //(1)
	int* j = &a[0][0];
	                //   5  4  9  1  9  3
	                //   |  |  |  |  |  |
					//   j  j+1   j+3   j+5    地址
	                //  *j *(j+1)*(j+3)*(j+5)  本身
	printf("%p\n", j + 3);     //000000BD236FF5D4
	printf("%d\n", *(j + 3));  //1
  //(2)
	int* i = &a[1][1];
					//   5  4  9  1  9  3
					//   |  |  |  |  |  |
					//  i-4      i-1 i  i+1    地址
					// *(i-4)       *i *(i+1)  本身
	printf("%p\n", i - 1);    //000000E0A4AFF944
	printf("%d\n", *(i - 1)); //1


//4.
	int* q[2];
	  //指针数组,一个数组内存放两个指针变量
	q[0] = a[0];  //相当于赋值
	q[1] = a[1];  //相当于赋值
	printf("%p,,%p\n", q[1], a[1]);         //0000006BDE57FB44 ,,0000006BDE57FB44
	printf("%d,,%d\n", q[1][1], a[1][1]);   //9 ,, 9
	printf("%d\n", *(q[1] + 2));     //3
	printf("%d\n", *(*(q + 1) + 2)); //3
	printf("%d\n", (*(q + 1))[2]);   //3

}

指针总结

#include 
int main(void)
{
	//1.数组名字是首元素地址
	//2.p指向一个变量的地址,*p就是这个变量本身的值
	//3.(*p + n) = p[n]


	int a[2][3] = { { 5,4,9},{1,9,3} };
//1.	
	int(*p)[2][3] = &a;   //	*p == a; 
	*p == a; 
	printf("%d\n", (*p)[1][1]);  //9
    //printf("%d\n", p[1][1]);     //错误

//2.
	int(*k)[3]= &a[0];//or = a or  = &a[0] or k = a;   //k == a ;
	   //数组指针,指向含有三个元素的一维数组
	a == &a[0]; k == a;
	printf("%d\n", k[1][0]);    //1
	printf("%d\n", (*k )[4]);   //9
	printf("%d\n", (*(k + 1))[1]);//9    (*(k+n)[m] == a[n][m]
	printf("%d\n", *(k[1] + 1));  //9     *(k[n]+m) == a[n][m]
	printf("%p\n", &a[0]);   //000000A0A42FF5B8
	printf("%p\n", a);       //000000A0A42FF5B8


//3.
  //(1)
	int* j = &a[0][0];
	                //   5  4  9  1  9  3
	                //   |  |  |  |  |  |
					//   j  j+1   j+3   j+5    地址
	                //  *j *(j+1)*(j+3)*(j+5)  本身
	printf("%p\n", j + 3);     //000000BD236FF5D4
	printf("%d\n", *(j + 3));  //1
  //(2)
	int* i = &a[1][1];
					//   5  4  9  1  9  3
					//   |  |  |  |  |  |
					//  i-4      i-1 i  i+1    地址
					// *(i-4)       *i *(i+1)  本身
	printf("%p\n", i - 1);    //000000E0A4AFF944
	printf("%d\n", *(i - 1)); //1


//4.
	int* q[2];
	  //指针数组,一个数组内存放两个指针变量
	q[0] = a[0];  //相当于赋值
	q[1] = a[1];  //相当于赋值
	printf("%p,,%p\n", q[1], a[1]);         //0000006BDE57FB44 ,,0000006BDE57FB44
	printf("%d,,%d\n", q[1][1], a[1][1]);   //9 ,, 9
	printf("%d\n", *(q[1] + 2));     //3
	printf("%d\n", *(*(q + 1) + 2)); //3
	printf("%d\n", (*(q + 1))[2]);   //3

}

赞 (0)

猜您想看

评论区(暂无评论)

这里空空如也,快来评论吧~

我要评论