指針與二維數組(筆記,一臉懵)

通用指針: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)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章