日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

C語言簡明介紹指針的使用_C 語言

作者:Emphatic ? 更新時間: 2022-08-05 編程語言

1. 指針類型

指針以字節為單位;

指針類型決定了解引用時能訪問的空間的大小;也決定了指針的步長(指針+1走多遠)

2. 野指針

  • 指針未初始化
  • 指針越界訪問
  • 指針指向的空間已釋放
int* test()
{
	int a = 10;//野指針
	return &a;
}
int main(){
	int* p =  test();
	//test函數里的a是局部變量,出函數時,儲存變量的空間已經還給操作系統了
	printf("%d\n",*p);
	//此時通過解引用不能再訪問到a;
}

如何規避野指針呢?

  • 指針初始化
  • 小心指針越界
  • 指針指向空間釋放即使置NULL
  • 避免返回局部變量的地址
  • 指針使用之前檢查有效性

3. 指針的運算

3.1 指針+-整數

	int arr[5] = {0,1, 2, 3, 4};
	int* p = arr;
	int i = 0;
	for(i=0; i<5; i++)
	{
		//printf("%d ",*p);
		//p++;
		printf("%d ",*p++);//以上兩種寫法相同
	}

3.2指針-指針

得到的是中間元素的個數,可以用來求字符串的長度

int my_strlen(char* arr)
{
	char* start = arr;
	char* end = arr;
	while(*end != '\0')
	{
		end++;
	}
	return end - start;
}

3.3 指針的關系運算

其實就是指針比較大小。實際在絕大部分的編譯器上是可以順利完成任務的,然而我們還是應該避免這樣寫,因為標準并不保證它可行。

	float values[5];
	float *vp;
	int i = 0;
	for (vp = &values[0]; vp < &values[5];)
	{
		*vp++ = 0; 
	}

4. 指針數組

存放指針的數組

    int a; int b; int c;
	int* arr[3] = {&a,&b,&c};

原文鏈接:https://blog.csdn.net/m0_60416282/article/details/125138575

欄目分類
最近更新