目錄
- 一.指標簡介
- 二.空指標 NULL
- 三.void 指標
- 四.重點總結
- 五.猜你喜歡
零基礎 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 = #
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
五.猜你喜歡
- C 語言邏輯運算子
- C 語言三目運算子
- C 語言逗號運算式
- C 語言 sizeof 和 strlen 函式區別
- C 語言 strcpy 和 strcpy_s 函式區別
- C 語言 memcpy 和 memcpy_s 區別
- C 語言 陣列定義和使用
- C 語言 陣列遍歷
- C 語言 陣列下標越界
- C 語言 陣列記憶體溢位
- C 語言 陣列下標越界和記憶體溢位區別
- C 語言 二維陣列定義和使用
- C 語言 二維陣列行數和列數計算
- C 語言 指標宣告和定義
- C 語言 指標 p++ / p–
- C 語言 p++/§++/_(p++)/_p++
- C 語言 使用指標遍歷陣列
- C 語言 指標和陣列區別
- C 語言 陣列指標
- C 語言 指標陣列
- C 語言 指標陣列和陣列指標區別
- C 語言 空指標 NULL
- C 語言 void 指標
未經允許不得轉載:猿說編程 ? C 語言 void 指標
本文由博客 - 猿說編程 猿說編程 發布!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/295945.html
標籤:C
