目錄:
- 1.野指標
- (1)什么是野指標?
- (2)野指標的成因
- a.指標為初始化
- b.指標訪問越界
- 2.指標陣列和陣列指標
- (1)指標陣列
- (2)陣列指標
- (3)指標陣列和陣列指標+1的區別
1.野指標
(1)什么是野指標?
野指標就是指標指向的位置是不可知的(隨機的,不正確的,沒有明確限制的)
(2)野指標的成因
a.指標為初始化
全域變數,靜態變數未初始化默認是會初始化的,默認是0
其他變數都不會初始化,默認是隨機值
eg:
#include<stdio.h>
int main()
{
int* p; //區域變數指標未初始化,默認是隨機值
*p = 20;
return 0;
}

b.指標訪問越界
eg:
#include<stdio.h>
int main()
{
int* arr[10] = { 0 };
int* p = arr;
for (int i = 0; i < 11; i++)
{
//當指標指向的范圍超出陣列arr的范圍時,p就是野指標
*(p++) = i;
}
return 0;
}

2.指標陣列和陣列指標
(1)指標陣列
指標陣列是一個陣列,存的是指標
eg:
int* arr[3]
(2)陣列指標
陣列指標是一個指標,指的是陣列
eg:
int A[10];
int (*p)[10] = &A;
(3)指標陣列和陣列指標+1的區別
#include<stdio.h>
int main()
{
int* A[8] = { 0 };
int* p = &A;
int(*pa)[8] = &A;
printf("%p %p\n", p,pa);
printf("%p %p\n", p + 1,pa + 1);
return 0;
}

當給兩個陣列同時加1時,指標陣列改變了一個型別的大小,陣列指標改變了一個陣列的大小
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/237105.html
標籤:其他
上一篇:軟工期末復習
