[英]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.