在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

什么是C語言(void*)類型

汽車電子技術 ? 來源:微亮筆記 ? 作者:PASSION ? 2023-02-24 14:31 ? 次閱讀

大家在C語言的學習過程中肯定見過各種指針符號,如 int*, char* 等等等等。顧名思義,int就是一個指向整形的指針,而char則是一個指向字符的指針,而 “ void* ”是什么呢?本期就為大家介紹 空指針

void指針一般被稱為通用指針或叫泛指針。它是C語言關于純粹地址的一種約定。當某個指針是void型指針時,所指向的對象不屬于任何類型。

1、void *表示一個“不知道類型”的指針,也就不知道從這個指針地址開始多少字節為一個數據。和用int表示指針異曲同工,只是更明確是“指針”。

因此void*只能表示一個地址,不能用來&取值,也不能移動指針,因為不知道多少字節是一個數據單位。

2、void *就是一個不能動的“地址”,在進行&、移動指針之前必須轉型為類型指針。

3、指針在只知道內存,但是不知道是什么類型的時候。

4、在C/C++中,在任意時刻都可以使用其它類型指針來代替void指針,或者用void指針來代替其他類型指針。

5、對指針變量的解引用,使用間接運算符*達到目的。但是在使用空指針的情況下,需要轉換指針變量解引用。這是因為空指針沒有與之關聯的數據類型。編譯器無法知道void指針指向的數據類型。因此,要獲取由void指針指向的數據,需要使用在void指針位置內保存的正確類型的數據進行類型轉換。

也就是說,void*類型的指針可以接受任意類型的指針

但是不能夠進行解引用操作,也不能進行加減運算

需要注意的是,void* 即使在接收某一具體類型的指針后,它的類型依然是void*,我們仍然無法對其進行解引用操作,需要進行強制類型轉換才可以。

由于空指針的特殊性,我們一般將其運用在函數參數里,用以接收各種類型的參數。

例:

void* e1;
*(int*)e1;

下面附帶一個有空指針參與的qsort(快速排序)函數

注1:由于qsort是庫函數,因此我在編寫時將函數名改為了 ‘my_qsort’

注2:此函數只是向大家展示空指針的應用,其中仍有指針方面的知識,我們會在后續章節具體介紹

qsort 函數
void swap(char*buf1,char*buf2,int width)
//交換函數
{
  for (int i = 0;i < width;i++)
  {
char tmp = *buf1;
*buf1 = *buf2;
*buf2 = tmp;    
buf1++;    
buf2++;
  }
 }
void my_qsort(void* base,int sz,int width, int (*cmp)(void* e1,void* e2))
{
  for (int i = 0;i < sz;i++)
  {    for (int j = 0;j < sz - 1 - i;j++)
{      //兩個元素的比較
      if (cmp((char*)base + j * width, (char*)base + (j + 1) * width)>0) 
     {        //交換
        swap((char*)base + j * width, (char*)base + (j + 1) * width,width);
      }
    }
  }
}int cmp_int(const void* e1, const void* e2)
{
  return *(int*)e1 - *(int*)e2;
}
int main()
{
  int arr[10] = { 9,8,7,6,5,4,3,2,1,0 };
  int sz = sizeof(arr) / sizeof(arr[0]);
  my_qsort(arr, sz, sizeof(arr[0]), cmp_int);}
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • C語言
    +關注

    關注

    180

    文章

    7604

    瀏覽量

    136824
  • Int
    Int
    +關注

    關注

    0

    文章

    23

    瀏覽量

    16067
  • 符號
    +關注

    關注

    0

    文章

    55

    瀏覽量

    4336
收藏 人收藏

    評論

    相關推薦

    C語言void指針的基本認識及典型應用

    C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種
    發表于 02-01 09:26 ?1101次閱讀

    C語言中的基本數據類型

    C語言是非常重要的一門程序設計語言,學好C語言再去學習其他編程語言將變得很輕松,因為大部分
    發表于 04-26 17:33 ?2013次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>中的基本數據<b class='flag-5'>類型</b>

    C預處理與C語言基本數據類型

    指令表:注意:宏名的書寫由標識符與兩邊各兩條下劃線構成。C語言基本數據類型不同操作系統中數據類型所占字節數圖解數據類型的其他分類:變量常量(
    發表于 12-21 08:29

    C程序的運行環境和C語言的數據類型

    ⒈ 實驗目的⑴ 了解在具體的語言環境下如何編輯、編譯、連接和運行一個C程序。⑵ 通過運行簡單的C程序,初步了解C源程序的特點。⑶ 掌握C
    發表于 06-21 09:36 ?55次下載

    C語言voidvoid指針深層探索

    1.概述 本文將對void關鍵字的深刻含義進行解說,并詳述voidvoid指針類型的使用方法與技巧。 2.void的含義
    發表于 09-21 11:36 ?166次下載

    C語言教程之檢查字符類型

    C語言教程之檢查字符類型,很好的C語言資料,快來學習吧。
    發表于 04-25 09:38 ?0次下載

    C語言教程之顯卡類型測試

    C語言教程之顯卡類型測試,很好的C語言資料,快來學習吧。
    發表于 04-25 17:07 ?0次下載

    淺談void 型指針的高階用法

    通用指針或叫泛指針。它是C語言關于純粹地址的一種約定。當某個指針是void型指針時,所指向的對象不屬于任何類型。 因為void指針不屬于任何
    的頭像 發表于 08-09 15:54 ?1646次閱讀
    淺談<b class='flag-5'>void</b> 型指針的高階用法

    STM32編程:void指針高階用法舉例,設計一個通用掉電存儲子系統

    一般被稱為通用指針或叫泛指針。它是C語言關于純粹地址的一種約定。當某個指針是void型指針時,所指向的對象不屬于任何類型。 因為void指針
    發表于 12-27 18:47 ?10次下載
    STM32編程:<b class='flag-5'>void</b>指針高階用法舉例,設計一個通用掉電存儲子系統

    C語言-void類型作為萬能指針類型

    void類型在基本數據類型里是`空類型`,`無類型`; void
    的頭像 發表于 08-14 10:04 ?1807次閱讀

    一文揭秘C語言void指針

    void *表示一個“不知道類型”的指針,也就不知道從這個指針地址開始多少字節為一個數據。和用int表示指針異曲同工,只是更明確是“指針”。
    的頭像 發表于 02-02 17:18 ?1583次閱讀

    什么是void指針

    C語言中,*類型就是指針類型,比如 int *p,double *q,雖然是不一樣的指針,但是大小卻一樣sizeof(p) == sizeof(q),因為它們都是同一種
    的頭像 發表于 02-13 15:02 ?1382次閱讀

    C語言的數據類型-2

    對于一個計算機程序,它所做的所有運算的本質都是數據的處理。但是數據的樣式并不單一,因此就有了各種各樣的數據類型。在C語言中,為了處理這些復雜的數據,C
    的頭像 發表于 02-21 14:44 ?791次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>的數據<b class='flag-5'>類型</b>-2

    如何理解C++中的void

    首先void*中的void代表一個任意的數據類型,"星號"代表一個指針,所以其就是一個任意數據類型的指針。
    的頭像 發表于 03-30 15:01 ?4203次閱讀
    如何理解<b class='flag-5'>C</b>++中的<b class='flag-5'>void</b>?

    C語言數據類型有哪些

    C 語言中,數據類型指的是用于聲明不同類型的變量或函數的一個廣泛的系統。變量的類型決定了變量存儲占用的空間,以及如何解釋存儲的位模式。
    發表于 03-20 10:56 ?482次閱讀
    <b class='flag-5'>C</b><b class='flag-5'>語言</b>數據<b class='flag-5'>類型</b>有哪些
    主站蜘蛛池模板: 午夜视频www| 性喷潮久久久久久久久| 亚洲xx站| 黄色一级片播放| 日本黄色片视频| 久久精品国产精品亚洲婷婷| 人人干97| 人人爱人人爽| 中文天堂最新版在线精品| 久久伊人精品青青草原高清| 免费特黄视频| 一级做a爱片特黄在线观看免费看| 久久性感美女视频| 狠狠干在线观看| 婷婷综合七月激情啪啪| 成年大片免费播放视频人| 男人操女人免费视频| 四虎影永久地址www| 一级特黄a 大片免费| 一级毛片在线不卡直接观看| 日本免费网| 免费午夜视频在线观看| 一级黄色片欧美| www.99在线| 亚洲人成网i8禁止| 久久久久久久国产精品电影| 国产精品大片天天看片| 四虎传媒| 天天操婷婷| 一级毛片在线免费视频| 最近在线视频免费观看2019| 亚洲精品第三页| 国产专区视频| 717影院理伦午夜论八戒| 美国一级做a一级爱视频| 国产不卡毛片| 日黄网站| 国产大片免费观看中文字幕| 色麒麟影院| 国产小视频在线看| 日韩特级毛片免费观看视频|