1.陣列本質
int a[5] 一維陣列名代表陣列首元素的位址
int a[5] ===> a的型別為
int*
二維陣列名同樣代表陣列首元素的位址
int b[2][5]===>b的型別為
int(*)[5]
注:二維陣列名
char array[10][100]
是乙個陣列指標,
char (*)[100]
2.二級指標的第一種記憶體模型:
/**
作用:練習二維陣列的第一種記憶體模型理解
**/#include"stdio.h"
#include "stdlib.h"
#include "string.h"
//輸出二維陣列的資料
void printarray(char **myarray, int num)
}//從大到小的排列
void sortarray(char **myarray, int num)
} }}int main();
printf("排序之前:\n");
printarray(arraydata, 5);
printf("排序之後:\n");
sortarray(arraydata, 5);
printarray(arraydata, 5);
system("pause");
return 0;
}
執行結果:
3.二級指標的第二種記憶體模型:
/**
作用:二維陣列的第二種理解
**/#include"stdio.h"
#include "stdlib.h"
#include "string.h"
//輸出函式
void printarray2(char arraydata[10][100],int num)
}//字串排序函式
void sortarray(char arraydata[10][100], int num)
} }}int main();
printf("排序之前----:\n");
printarray2(arraydata, 5);
sortarray(arraydata, 5);
printf("排序之後----:\n");
printarray2(arraydata, 5);
system("pause");
return 0;
}
執行結果:
4.二級指標的第三種記憶體模型:
/**
作用:二維陣列和二維指標的第三種理解
**/#include"stdio.h"
#include "stdlib.h"
#include "string.h"
void printarray3(char **arraydata,int num)
}int main()
for (int i = 0; i < num; i++)
//將資料打到快取中
sprintf(arraydata[i], "%d,%d,%d,%d", i + 5, i * 2, i * 3, i*i*i);
} //列印出資料
printf("二維陣列和二維指標的第三種用法:\n");
printarray3(arraydata, num);
system("pause");
return 0;
}
執行結果:
二維陣列和二級指標
前兩天寫個程式,傳引數的時候想傳個二維陣列進去,結果悲劇了,函式寫成fun int p 原來沒有這麼寫過,以為這麼寫也是對的,結果錯了,查了些資料,做個總結。fun int p 這裡面的int p 這裡的p不是二維陣列的指標,而是指向指標的指標,即二級指標。正確的二維陣列的指標應該是 int a 2...
C語言的二級指標與二維陣列
指標是c語言的一大特色,它就像一把雙刃劍 使用得當能夠給程式帶來極大的靈活性和高效性 反之,程式就會變得難以除錯,漏洞百出!眾所周知,指標實質就是位址!乙個變數的位址即稱為此變數的 指標 如果有這樣一種變數 它的儲存單元裡存放的是其它變數的位址!我們就稱之為 指標變數 請注意兩者之間的區別 兩個完全...
C 指標和陣列 二級指標和二維陣列
1 陣列名代表的是陣列首元素的位址,這是乙個常量。即陣列已經定義,它的含義便已經明確了,陣列就是乙個固定記憶體塊大小的別名 2 陣列首元素的位址和陣列的位址是不同的東西 3 陣列也是一種陣列型別,其型別由構成陣列的元素的型別和陣列的大小一起決定 現在對上面所提到的內容進行一下詳細的解釋 看乙個例子 ...