指针与二维数组(笔记,一脸懵)

通用指针:void*
1.通用指针可以接受任意类型指针的赋值
2.通用指针不携带类型信息
3.通用指针不能进行寻址操作(解引用操作)
4.通用指针赋值给普通指针,需要显示类型转换(强制类型转换)

指针与一维数组的关系

#include <bits/stdc++.h>
using namespace std;
int main()
{
	int arr[4] = {11,22,33,44};
	//一维数组名表示:数组首元素地址
	//arr[1] --> *(arr + 1)    下标法本身就是指针寻址
	int *p = arr;
	//p[1] --> *(p + 1) 指针可以使用下标法访问元素
	// &arr+1 移动一个数组单位,指向下一个数组
	//数组地址  寻址 = 数组首元素的地址
	// * & arr -->arr 

	return 0;
}
//arr[0][0]:第一行第一个元素
//&arr[0][0]:第一行第一个元素的地址
//&*(arr[0]+0)->arr[0]:第一行第一个元素的地址
//arr:第一行的地址/第一行这个一维数组的地址
//*arr->arr[0]:第一行第一个元素的地址
//arr+1:第二行的地址


已知:int a[2][3];下列各表达式的含义:
&a:数组的地址
a:第一行的地址
&a[0]:第一行的地址
a[0]:第一行第一个元素的地址
a[0][0]:第一行第一个元素
&a[0][0]:第一行第一个元素的地址


已知:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
a[1]+2:第二行第三个元素的地址
 *(a+1)+2:第二行第三个元素的地址
 *(a[1]+2):第二行第三个元素
*(*(a+1)+2):第二行第三个元素
(*(a+1))[2]:第二行第三个元素


已知:int a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
          int(*p)[4]=a;
          int*q=&a[0][0];请用p,q分别表示下面的表达式:
a[1]:    *(p+1)       q+4
a+2:    p+2          (int (*)[4])(q+8)
a[2][2]:    *(*(p+2)+2)      *(q+10)
发布了60 篇原创文章 · 获赞 22 · 访问量 6967

猜你喜欢

转载自blog.csdn.net/weixin_43786143/article/details/89918315