1、先說二維,可以這么理解:
十年的大廠網(wǎng)站建設(shè)經(jīng)驗,針對設(shè)計、前端、開發(fā)、售后、文案、推廣等六對一服務(wù),響應(yīng)快,48小時及時工作處理。成都營銷網(wǎng)站建設(shè)的優(yōu)勢是能夠根據(jù)用戶設(shè)備顯示端的尺寸不同,自動調(diào)整大廠建站的顯示方式,使網(wǎng)站能夠適用不同顯示終端,在瀏覽器中調(diào)整網(wǎng)站的寬度,無論在任何一種瀏覽器上瀏覽網(wǎng)站,都能展現(xiàn)優(yōu)雅布局與設(shè)計,從而大程度地提升瀏覽體驗。創(chuàng)新互聯(lián)從事“大廠網(wǎng)站設(shè)計”,“大廠網(wǎng)站推廣”以來,每個客戶項目都認真落實執(zhí)行。
int n[3]有3個int
那么,
int m[5][3]有5個int[3]
賦值時:
n[1]=3把3給1號
m[4]={5,9,4}m[4]是個int[3]類型,這么賦值,也就是這么賦值:
m[4]的[0]是5:m[4][0]=5
m[4][1]=9
m[4][2]=4
懂了嗎?三維甚至更多維大同小異,比如
int k[4][5][3]有4個int[5][3]
2、例程:
int***?CreateGrid(int?m,int?n,int?t)
{
int***?tt?=?NULL;?
tt?=?(int***)malloc(sizeof(int)*m);
for(int?i=0;im;i++)
{
tt[i]?=?(int**)malloc(sizeof(int)*n);;
for?(int?k=0;kn;k++)
{
tt[i][k]?=?(int*)malloc(sizeof(int)*t);
}
}
return?tt;
}
void?FreeGrid(int***?tt,int?m,int?n,int?t)
{
if(tt?!=?NULL)
{
for(int?i=0;im;i++)
{
for?(int?j=0;jn;j++)
{
free((tt[i][j]));
}
free(tt[i]);
}
free(tt);
tt?=?NULL;
}
}
示例代碼:
#include?stdio.h
#include?stdlib.h
int?main()
{
//有效部分
int?***p?=?(int***)malloc(sizeof(int**)*3);
for?(int?i?=?0;?i??3;?++i){
p[i]?=?(int**)malloc(sizeof(int*)?*?4);
}
for?(int?i?=?0;?i??3;?++i){
for?(int?j?=?0;?j??4;?++j){
p[i][j]?=?(int*)malloc(sizeof(int)?*?5);
}
}
//有效部分完
//下面內(nèi)容為測試
for?(int?i?=?0;?i??3;?++i){
for?(int?j?=?0;?j??4;?++j){
for?(int?k?=?0;?k??5;?++k){
p[i][j][k]?=?i?+?j?+?k;
}
}
}
for?(int?i?=?0;?i??3;?++i){
for?(int?j?=?0;?j??4;?++j){
for?(int?k?=?0;?k??5;?++k){
printf("%d\t",?p[i][j][k]);
}
printf("\n");
}
printf("\n");
}
return?0;
}
#includestdio.h
void check(int * * *ppp) {
printf("三維數(shù)組Begin:{\n");
printf("{ %d,%d,\n", ppp[0][0][0], ppp[0][0][1]);
printf("%d,%d,%d,%d,\n", ppp[0][1][0], ppp[0][1][1], ppp[0][1][2], ppp[0][1][3]);
printf("%d,%d,%d,%d,%d },\n", ppp[0][2][0], ppp[0][2][1], ppp[0][2][2], ppp[0][2][3], ppp[0][2][4]);
printf("\n");
printf("{ %d,%d,%d,%d,%d,\n", ppp[1][0][0], ppp[1][0][1], ppp[1][0][2], ppp[1][0][3], ppp[1][0][4]);
printf("%d,%d,%d,%d },\n", ppp[1][1][0], ppp[1][1][1], ppp[1][1][2], ppp[1][1][3]);
printf("\n");
printf("{ %d,%d,\n", ppp[2][0][0], ppp[2][0][1]);
printf("%d,%d,%d,\n", ppp[2][1][0], ppp[2][1][1], ppp[2][1][2]);
printf("%d,%d,%d,\n", ppp[2][2][0], ppp[2][2][1], ppp[2][2][2]);
printf("%d },\n", ppp[2][3][0]);
printf("} //三維數(shù)組End\n");
}
void main()
{
//一維
int a1[]={1,11};?
int a2[]={2,22,222,2222};
int a3[]={3,33,333,3333,33333};
int a4[]={4,44,444,4444,44444};
int a5[]={5,55,555,5555};
int a6[]={6,66};
int a7[]={7,77,777};
int a8[]={8,88,888};
int a9[]={9};
//二維
int * b1[]={a1,a2,a3};
int * b2[]={a4,a5};
int * b3[]={a6,a7,a8,a9};
//三維
int ** a[] = {b1,b2,b3};
check(a);
}
void fun(a,10) 將數(shù)組a的首地址賦給指針s
{?
int i; i 計的是這數(shù)組中有幾個字母
for (;*s;s++) 每循環(huán)一次,s后移一位,判斷結(jié)束循環(huán)的條件s指向的內(nèi)容為" \0 "
{
if(*s='a'*s='z'||*s='A'*s='Z')?
i++;
}
三維數(shù)組可以按一維排列。
下面是完整程序和調(diào)用例子:
#include stdio.h
#include time.h
void rr(int *a, int n){
int i;
for (i=0;in;i++) a[i]=rand();
}
main( ){
int a[2][3][4];
int i,j,k;
srand(time(NULL)); //種子
rr(a[0][0][0],2*3*4); //調(diào)用
for (k=0;k2;k++){
for (j=0;j3;j++){
for (i=0;i4;i++)printf("%d ",a[k][j][i]); //輸出
printf("\n");
}
printf("\n");
}
return 0;
}
最簡單的做法是在結(jié)構(gòu)體里存函數(shù)指針,然后初始化結(jié)構(gòu)體的時候?qū)⒑瘮?shù)的地址賦值給它。
復雜一點的,就得按照c++的多態(tài)原理,用虛函數(shù)表(其實就是能記錄函數(shù)名對應(yīng)的函數(shù)地址就好)記錄每種結(jié)構(gòu)體的成員函數(shù)地址,然后每個結(jié)構(gòu)體里多存一個虛函數(shù)表的地址。。。然后調(diào)用函數(shù)的時候查到函數(shù)地址強轉(zhuǎn)成函數(shù)類型然后調(diào)用。。。這個可以自己研究一下c++的虛函數(shù)表機制。