1. 程式人生 > >陣列指標動態陣列之間的關係

陣列指標動態陣列之間的關係

  敲程式碼時候需要動態宣告一個二維陣列,然後開始然,然不清,然後發現指標也然不清了...然後總結一些筆記關於陣列,指標,malloc,free。
  • 變數
//陣列與指標關係
int a;
int *p;
p=&a;
//malloc
int *p=(int *)malloc(sizeof(int ));
//free
free(p);
  • 一維陣列
//陣列與指標關係
 int a[N];
 int *p;
 p=a;
 //malloc
 int *p=(int *)malloc(sizeof(int )*N);
 //free
 free(p);
  • 二維陣列

1.陣列指標

//陣列與指標關係
int a[N][M]; int (*p)[M]=a; //(*p)是一個指標,型別是int(*)[M];即指向int型的長度為M的一維陣列,(因為之前a宣告的陣列大小是N*M,所以可以通過p++或p[N]來訪問不同行,這裡也可以看出一點二維陣列a在定義的時候的型別是int (*)[]型,這也許就是不能把一個二維陣列賦給一個二級指標的原因) //malloc(這裡面用malloc 必須是要知道M(你知道我說的M特指什麼)); int (*p)[M]=(int (*)[M])malloc(sizeof(int)*N*M); //free free(p);

2.指標陣列

//陣列與指標關係
int a[N][M];
int
*p[N];//p[N]是一個數組,什麼陣列呢,int *型;即一個長度為N的一維陣列儲存的是int*型的指標。(這樣我們就可以把a[N]一個一個賦值給p[N]) for(i=0;i<N;i++) p[i]=a[i]; //malloc(這裡的malloc需要知道N,you know that) int *p[N]; for(i=0;i<n;i+) p[i]=(int *)malloc(sizeof(int )*M); //free(這裡p是一個數組不用free,需要free掉的是陣列儲存的指標指向的的空間) for(i=0;i;<<n;i++) free(p[i]);

3.二級指標

//陣列與指標關係
int a[N][M];
int **p;
p=a;//哈哈,你會發現他會說型別不符,至於為什麼上面說了
p=&a;//哈哈,你會發現他還是會說型別不符,至於為什麼和剛剛一樣
//malloc(這裡malloc和指標陣列類似,相當於是找了一個二級指標去指向那個指標陣列)
int **p;
p=(int **)malloc(sizeof(int *)*N);
for(i=0;i<n;i++)
    p[i]=(int *)malloc(sizeof(int )*M);
//free(這裡要先將一級指標釋放,然後講二級指標釋放)
for(i=0;i<n;i++)
    free(p[i]);
free(p);

over

相關推薦

陣列指標動態陣列之間關係

敲程式碼時候需要動態宣告一個二維陣列,然後開始然,然不清,然後發現指標也然不清了...然後總結一些筆記關於陣列,指標,malloc,free。 變數 //陣列與指標關係 int a;

指標動態陣列初步+動態陣列元素個數確定方法

一、學到指標與動態陣列趕緊記錄一下 用new操作符為陣列分配記憶體尤其有用,因為陣列的元素個數往往是在程式執行時才能計算得出的 ——《資料結構與面向物件程式設計》(C++版)Michael Main等編著 下面是一部分簡單的程式碼 #include<iostrea

指標陣列陣列指標陣列引用

好久不用C++,今天遇到陣列指標又迷糊了,感覺複習一波並記錄下來 陣列引用 定義一個4x3的陣列: int arr[4][3] = { 0,11,22,33,44,55,66,77,88,1,2,3 }; 定義對陣列的引用:ref是一個大小為3的陣列,是對a[0]的引用;

靜態陣列動態陣列 c形式與c++形式的字串

既然要學習陣列,那麼先來了解一下陣列是什麼,為什麼要有陣列的出現吧。 陣列:陣列是一系列具有相同型別元素的集合。 陣列的出現是為了當定義較多變數時,使操作更簡單化,直觀化。 靜態陣列與動態陣列 *靜態陣列:*在編譯階段,陣列包含的元素數以及佔用的記憶體量是不變的。 可分為:一維陣列與

Java How to Program習題_第七章_陣列動態陣列(Array and ArrayList)——第一部分(7.1 - 7.22)

這一章的習題非常多,而且都有一定的難度(如海龜繪圖、騎士遊歷等)。 我希望能夠全部做完,但是時間有限,最好還是加快進度往後面的章節進步吧。所以,先把已經完成的習題放上來吧。 Self-Review Exercises 7.1 Fill in the blank(

C++中獲取靜態陣列動態陣列的長度

1.對於字串陣列,可以用strlen( )函式來獲取字串陣列的長度。    如:                 char a1[] = "fwegwe";                cout << strlen(a1) << endl;    

JS 索引陣列、關聯陣列和靜態陣列動態陣列

陣列分類: 1、從陣列的下標分為索引陣列、關聯陣列 /* 索引陣列,即通常情況下所說的陣列 */ var ary1 = [1,3,5,8]; //按索引去取陣列元素,從0開始(當然某些語言實現從1開始) //索引實際上就是序數,一個整型數字 alert(ary1[0]); alert(ary1[1]);

索引陣列、關聯陣列和靜態陣列動態陣列

陣列分類:1、從陣列的下標分為索引陣列、關聯陣列 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 /* 索引陣列,即通常情況下所說的陣列 */ var ary1 = [1,3,5,8];

陣列指標——指向陣列首元素和指向陣列的區別

先定義一個一維陣列 int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 有時我們會說,讓指標指向一個數組。然後寫出下面的程式碼: int *p1 = a; // p1指向陣列首元素 實際上這種說法和上面的程式

指標陣列指標與函式之間關係

指標陣列和陣列指標 指標陣列,它的關鍵在於是一個數組,即陣列中每個元素都是指標。 陣列指標,他的關鍵在於是指標變數,即這個指標指向一個數組。 #include<stdio.h> int main () { int arr [4] = {

陣列指標、函式之間關係

陣列 int a[5]; 定義了一個數組,其中包含了5個int型別資料,我們可以用a[0],a[1],a[2]…等訪問這些元素 sizeof(a)為整個元素大小,為20。 sizeof(a[0])是第一個元素的大小,為4。 sizeof(a[5])

徹底搞清C/C++中一維陣列,二維陣列指標陣列指標指標陣列以及指向指標指標,行地址和列地址之間關係

#include <iostream> using namespace std; void test(char **ptr) { for(;(strcmp(*ptr,"NULL"))!=0;ptr=ptr+1)        cout << *(ptr) <&l

利用動態規劃演算法解01揹包問題->二維陣列傳參->cpp記憶體管理->堆和棧的區別->常見的記憶體錯誤及其對策->指標陣列的區別->32位系統是4G

1、利用動態規劃演算法解01揹包問題 https://www.cnblogs.com/Christal-R/p/Dynamic_programming.html 兩層for迴圈,依次考察當前石塊是否能放入揹包。如果能,則考察放入該石塊是否會得到當前揹包尺寸的最優解。 // 01 knap

C指標 三維動態陣列建立

#include "stdafx.h" #include <stdio.h> #include <stdlib.h> //create 3D array add init cell 0 int*** createArray3D(int row, int col, int c

17. C語言 -- 指標陣列關係

本部落格主要內容為 “小甲魚” 視訊課程《帶你學C帶你飛》【第一季】 學習筆記,文章的主題內容均來自該課程,在這裡僅作學習交流。在文章中可能出現一些錯誤或者不準確的地方,如發現請積極指出,十分感謝。 也歡迎大家一起討論交流,如果你覺得這篇文章對你有所幫助,記得評論、點贊哦 ~(。

連續子陣列最大和O(n)兩種解法:雙指標 動態規劃

題目描述 HZ偶爾會拿些專業問題來忽悠那些非計算機專業的同學。今天測試組開完會後,他又發話了:在古老的一維模式識別中,常常需要計算連續子向量的最大和,當向量全為正數的時候,問題很好解決。但是,如果向量中包含負數,是否應該包含某個負數,並期望旁邊的正數會彌補它呢?例如:{6,-3,-2,7

指標陣列關係

指標是一個值為地址的變數,即儲存地址的變數,地址沒有資料型別之說,char *,int *都是一樣的長度,跟機器有關。 int *a表示a地址處儲存的值為整型。 指標的初始化 int a = 10; int *b = &a;  或者 1 int a = 10; 2 int

C語言中指標的深入學習之指標陣列之間的恩怨

序言: 我總是在想到底什麼樣的問題才是值得寫一篇部落格來記錄的,什麼高深的學術?顯然對於筆者來說並不適合,我只是記錄自己在所學之時覺得有價值的問題,這樣部落格也變得有意義了; a與&a的區別(指標加減的理解) 注意此處是建立在定義int a[5] 的基

C#:索引器用法、集合(動態陣列,堆疊,佇列,雜湊表)用法、指標(fixed關鍵字)用法

1.索引器用法   http://www.runoob.com/csharp/csharp-indexer.html 2.集合用法   http://www.runoob.com/csharp/csharp-collection.html 3.指標用法

指標陣列陣列指標、二維陣列動態分配記憶體

1. 二維陣列動態分配和釋放 1. 已知第二維 char (*a)[N];//指向陣列的指標 a = (char (*)[N])malloc(sizeof(char *) * m); printf("%d\n", sizeof(a));//4,指標