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

歡迎訪問 生活随笔!

生活随笔

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

pytorch

【C语言进阶深度学习记录】二十八 数组指针与指针数组的分析

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

數組指針與指針數是非常重要的概念。面試中也是經常會被問到的

文章目錄

    • 1 數組的類型
      • 1.1 定義數組的類型
    • 2 數組指針
      • 2.1 數組類型和數組指針的代碼分析
    • 3 指針數組
      • 3.1 指針數組代碼案例分析
    • 4 總結

1 數組的類型

C語言中的數組有自己特定的類型。比如 int a[5];

數組a的類型是 int[5],并不是 int類型。

  • 數組類型是由元素類型數組大小共同決定的

1.1 定義數組的類型

在C語言中可以通過typedef 為數組的類型重命名。如下:

  • 數組的類型:

  • 數組的定義:

這種寫法可能有的人沒見過,等看過后面的數組指針與指針數的定義的時候就知道了。

2 數組指針

  • 數組指針是一個指針,不是數組。這個指針指向一個數組。該指針需要使用取地址符 & 向數組取地址。(數組的整個地址而非數組元素首地址)
  • 可以通過數組類型來定義數組指針:ArrayType* pointer;
  • 也可以直接定義:type(*pointer)[n];

注意:上面的pointer為數組指針變量,ArrayType是數組的類型,type是數組里面元素的類型。注意區分三者的不同。

2.1 數組類型和數組指針的代碼分析

分析下面的代碼32-1.c:

#include <stdio.h>/* 定義數組類型 */ typedef int(AINT5)[5]; typedef float(AFLOAT10)[10]; typedef char(ACHAR9)[9];int main(){AINT5 a1; //int a1[5];float fArray[10];AFLOAT10* pf = &fArray; //注意與float* pf = &fArray 區分ACHAR9 cArray;char(*pc)[9] = &cArray;int i = 0;printf("%d, %d\n", sizeof(AINT5), sizeof(a1));for(i=0; i<10; i++){(*pf)[i] = i; //注意數組指針的用法}for(i=0; i<10; i++){printf("%f\n", fArray[i]);}printf("%p, %p\n", &cArray, pc+1); //pc是整個數組的指針,pc+1 ==》&cArray + 9return 0; }
  • 編譯運行上述代碼:

分析:

  • 注意學習上面定義數組類型的方法,并使用定義的數組類型來定義數組。
  • 注意數組指針的聲明與使用方法
  • 數組指針是整個數組的地址,需要使用& 號來獲取
  • 代碼比較簡單,不多做分析

3 指針數組

  • 指針數組是一個數組,不是指針。該數組存的元素是指針。
  • 指針數組的定義: type* pArray[n];

其中 type* 是數組中存的元素的類型pArray 是數組名。如下圖的指針數組:

3.1 指針數組代碼案例分析

  • 代碼32-2.c
#include <stdio.h> #include <string.h>#define DIM(a) (sizeof(a)/sizeof(*a))int lookup_keyword(const char* key, const char* table[], const int size){int i=0;for(i=0; i<size; i++){if(strcmp(key, table[i]) == 0){break;}}return i>=size?-1:i; } int main(){const char* keyword[] = {"do","for","if","register","return","switch","while","case","static"};printf("%d\n", lookup_keyword("return", keyword, DIM(keyword)));printf("%d\n", lookup_keyword("main", keyword, DIM(keyword)));return 0; }
  • 編譯運行結果為:

4
-1

分析:

  • lookup_keyword這個函數是查找字符串數組中是否存在某一個字符串
  • table數組,就是一個指針數組,里面存的是指針。(字符串是一種常量指針)
  • 注意學會使用指針數組的使用。

4 總結

  • 數組也是有類型的:由數組的大小元素的類型共同決定的
  • 數組指針是一個指針,該指針指向對應類型的數組
  • 指針數組是一個數組,該數組中存的元素是對應類型的指針
  • 指針數組的使用與數組是一樣的。但是注意指針數組在使用的時候是如何表示的。

總結

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

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