日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人工智能 > pytorch >内容正文

pytorch

【C语言进阶深度学习记录】八 C语言中void的分析

發布時間:2023/12/10 pytorch 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【C语言进阶深度学习记录】八 C语言中void的分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

    • 1 void的意義
      • 1.1 不存在void變量
      • 1.2 C標準
      • 1.3 void指針的意義
      • 1.4 通過void* 實現memset函數
    • 2 總結

1 void的意義

void修飾函數的參數和返回值的時候:

  • 如果函數沒有返回值應該將其返回值聲明為void
  • 如果函數沒有參數,應該將函數的參數聲明為void
  • 如果沒有參數,并且不聲明為void,則函數參數默認是任意的,比如main函數
  • 如果函數沒有返回值,但是不聲明為void,則函數默認返回值是int

如下圖中的函數f(),它的返回值沒有聲明為void,默認是int,參數可以是任意多個。

注意:

  • void的是為了表示函數參數和返回值為
  • 從以上內容,也可以知道,C語言不是一門強類型語言。因為返回值不聲明,就默認可以是int

1.1 不存在void變量

在之前的文章中,我們學過了C語言中的變量的意義:【C語言進階深度學習記錄】一 數據類型的本質與變量的本質 ,知道變量的意義在于一段固定大小內存的別名。但是void無法表示這么一段固定大小的內存,沒有void的標尺,無法在內存中裁剪出void對應的變量,所以void無法聲明變量。

比如下圖的代碼中,標出error的兩行代碼:

  • 但是void* pv這一行沒有標識錯誤。說明這樣是可以的。后序會說明void指針的作用。

1.2 C標準

現在我們先要知道兩個C標準

  • ANSI C標準:標準C語言的規范
  • 擴展C標準:不同的廠商在ANSI C標準上進行了擴充。

比如下面的代碼,在ANSI C標準中是會出錯的,但是在GNU的C標準中的gcc編譯器是可以的,且sizeof(void)的大小是1 :

1.3 void指針的意義

void指針在C語言中具有很大的作用,首先我們需要知道:

  • C語言規定,只有相同類型的指針才可以相互賦值
  • void* 指針作為左值時,可以接收任意類型的指針
  • void* 指針作為右值時,需要對它進行強制類型轉換

1.4 通過void* 實現memset函數

  • 代碼:MemSet.c
#include <stdio.h>void MemSet(void* src, int length, unsigned char n) {unsigned char* p = (unsigned char*)src;int i = 0;for(i=0; i<length; i++){p[i] = n;} }int main() {int a[5];int i = 0;MemSet(a, sizeof(a), 0);for(i=0; i<5; i++){printf("%d\n", a[i]);}return 0; }
  • 編譯運行結果為:

2 總結

  • void是一種抽象的數據類型
  • void類型不能用于定義變量
  • void類型一般可以用于聲明無參函數
  • void類型也可以用于聲明函數無返回值
  • 可以定義void* 類型的指針
  • void* 指針可以接收任意類型的指針值

總結

以上是生活随笔為你收集整理的【C语言进阶深度学习记录】八 C语言中void的分析的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。