1.指針的運算




2.指針運算有意義的操作和無意義的操作、

#include <stdio.h>
int main()
{//前提條件:保證內存空間是連續的//數組int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//獲取0索引的內存地址int* p1 = &arr[0];//通過內存地址(指針P)獲取數據printf("%d\n", *p1);printf("%d\n", *(p1 +1));//獲取5索引的內存地址int* p2 = &arr[5];//p2 - p1間隔了多少時長printf("%d\n", p2 - p1);printf("%p\n", p1);printf("%p\n", p2);return 0;
}
3.野指針和懸空指針
#include <stdio.h>
int* method();int main()
{//野指針:指針指向的空間未分配int a = 10;int* p1 = &a;printf("%p\n", p1);printf("%d\n", *p1);//p2野指針int* p2 = p1 + 10;printf("%p\n", p2);printf("%d\n", *p2);//懸空指針:指針指向的空間已經分配,但是被釋放了int* p3 = method();printf("拖點時間\n");printf("%p\n", p3);printf("%d\n", *p3);return 0;
}
int* method()
{int num = 10;int* p3 = #return p3;}
4.void類型的指針
筆記

代碼
5.二級指針和多級指針
筆記


程序
#include<stdio.h>
int main()
{//定義變量int a = 10;int b = 20;//定義一級指針int* p = &a;//定義二級指針int** pp = &p;//利用二級指針修改一級指針里面記錄的內存地址*pp =&b;//作用2:利用二級指針獲取到變量中記錄的數據//輸出打印printf("%p\n", &a);printf(" % p\n", &b);printf("%p\n", p);printf("%d\n", **pp);//pp表示二級的//?一個*表示解一下,獲取一級里面所記錄的內存地址//再?一個*表示通過一級指針里面所記錄的內存地址,再去獲取到變量里面的數據return 0;
}