簡體   English   中英

C語言中的指針和數組

[英]Pointers and Arrays in C language

我絕不是C語言的大師,也不是我自稱的。 但我很確定我理解指針,直到我遇到這兩個非常不同的實現,作者聲稱這些實現會有相同的結果。 我只是沒有看到它。 有人可以向我解釋一下這些是做什么的嗎?

int (*AA)[4];
AA = malloc(sizeof(int[4])*size);

和第二個:

int *BB;
BB = (int *)malloc(size*sizeof(int));

從我目前的理解,如果我想用c ++制作第二個,它相當於:

int *CC;
CC=new int[size]

這個假設是正確的嗎?

第一部分: int (*AA)[4]; 將AA定義為指向int [4]的指針。

AA = malloc(sizeof(int[4])*size); size int[4] s分配存儲空間

第二部分: int *BB; 將BB定義為指向int的指針。

BB = (int *)malloc(size*sizeof(int)); size int分配存儲,然后不必要地轉換結果,從而引入一個你不會得到警告的潛在錯誤(即,如果malloc()的原型不在范圍內)。

因此,結果可以說是不同的

盡管如此,鑒於您的代碼:

在此輸入圖像描述

為了說明,這是在調試模式下查看創建內容時顯示的內容:(ANSI C99編譯器,32位構建)

至少, 充分理解作者在陳述相同結果時的意義非常重要。
還說明了為什么使用calloc()而不是malloc()可能是一個不錯的選擇(C99)。

第二部分問題: C ++版

int* BB = new int[size];  

已驗證。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM