C語言 void 指針 - C語言零基礎入門教程


目錄

零基礎 C/C++ 學習路線推薦 : C/C++ 學習目錄 >> C 語言基礎入門

一.指針簡介

在前面的文章有關於指針的介紹:指針很靈活,它可以指向任意類型的數據。指針的類型說明了它所指向地址空間的內存,以下是有效的指針聲明:

int    *p;    /* 一個整型的指針 */
double *p;    /* 一個 double 型的指針 */
float  *p;    /* 一個浮點型的指針 */
char   *p;    /* 一個字符型的指針 */

注意:不要忘記在指針類型和變量名中間還有一個 * 號,沒有這個 * 號,只是定義了一個普通變量,這也是普通變量聲明和指針聲明的區別之一;

二.空指針 NULL

C 語言中,如果一個指針不指向任何數據,我們就稱之為 空指針 ,用 NULL 表示。例如:

int *p = NULL;

注意區分大小寫,null 沒有任何特殊含義,只是一個普通的標識符。NULL 是一個宏定義,在 stdio.h 被定義為:

#define NULL ((void *)0)

我們知道,變量一旦定義就要分配內存,指針變量也是如此。當你還不清楚要把指針初始化為什么地址時,請將它初始化為 NULL;例如:

int *p;  //它不是空指針

它的值是隨機的,是垃圾值,如果不小心使用了它,運行時一般會引起段錯誤,導致程序退出,甚至會不知不覺地修改數據。當你還不清楚要把指針初始化為什么地址時,請將它初始化為 NULL;

三.void 指針

C 語言還有一種 void 指針類型,即可以定義一個指針變量,但不說明它指向哪一種類型數據。例如:

void *p = malloc(20);

上面代碼表示在內存中分配 20 個字節的空間,但不確定它保存什么類型的數據,有可能是 char,也有可能是 int 或者 float double……

void 指針通常稱為通用指針,就是可以指向任意類型的數據。也就是說,任何類型的指針都可以賦值給 void 指針,例如:

/******************************************************************************************/
//@Author:猿說編程
//@Blog(個人博客地址): www.codersrc.com
//@File:C語言教程 - C語言 void 指針
//@Time:2021/06/22 08:00
//@Motto:不積跬步無以至千里,不積小流無以成江海,程序人生的精彩需要堅持不懈地積累!
/******************************************************************************************/

#include<stdio.h>

int main()
{
	int num = 1024;
	int *pi = &num;
	char *ps = "猿說編程 - codersrc.com";
	void *pv;

	pv=pi;
	printf("pi:%p\npv:%p\n",pi,pv);
	printf("*pv:%d\n",*(int *)pv);

	pv=ps;
	printf("pv:%p\nps:%p\n",pv,ps);
	printf("*pv:%s\n",(char *)pv);
	return 0;
}

/*

輸出結果:
pi:0060FEF0
pv:0060FEF0
*pv:1024
pv:00403064
ps:00403064
*pv:猿說編程 - codersrc.com
*/

四.重點總結

  • NULL 用於指針和對象,指向一個不被使用的地址;而’\0’表示字符串的結尾;
  • NULL 指針: #define NULL ((void *)0)
  • 當你還不清楚要把指針初始化為什么地址時,請將它初始化為 NULL ;在對指針進行解引用時,先檢查該指針是否為 NULL

五.猜你喜歡

  1. C 語言邏輯運算符
  2. C 語言三目運算符
  3. C 語言逗號表達式
  4. C 語言 sizeof 和 strlen 函數區別
  5. C 語言 strcpy 和 strcpy_s 函數區別
  6. C 語言 memcpy 和 memcpy_s 區別
  7. C 語言 數組定義和使用
  8. C 語言 數組遍歷
  9. C 語言 數組下標越界
  10. C 語言 數組內存溢出
  11. C 語言 數組下標越界和內存溢出區別
  12. C 語言 二維數組定義和使用
  13. C 語言 二維數組行數和列數計算
  14. C 語言 指針聲明和定義
  15. C 語言 指針 p++ / p–
  16. C 語言 p++/§++/_(p++)/_p++
  17. C 語言 使用指針遍歷數組
  18. C 語言 指針和數組區別
  19. C 語言 數組指針
  20. C 語言 指針數組
  21. C 語言 指針數組和數組指針區別
  22. C 語言 空指針 NULL
  23. C 語言 void 指針

未經允許不得轉載:猿說編程 » C 語言 void 指針

本文由博客 - 猿說編程 猿說編程 發布!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM