六 二級指標三種記憶體模型
1第一種:指標陣列:char *myarray=;
#include #include #include void printmyarray11(char **myarray, int num)}}
}void main()
;//列印
num = sizeof(myarray)/sizeof(myarray[0]);
printf("排序之前\n");
printmyarray11(myarray, num);
sortmyarray11(myarray, num);
printf("排序之後\n");
printmyarray11(myarray, num);
printf("hello...\n");
system("pause");
return ;
}
2 第二種 :二維陣列:char myarray[10][30]=;
#include #include #include //問題的本質是:dm03_二級指標做輸入_第2種記憶體模型 的 myarray + 1
// dm03_二級指標做輸入_第1種記憶體模型 myarray + 1 不一樣 ;
**//指標的步長不一樣 指標所指向的記憶體空間的資料類不一樣 。。。。**
void printmyarray02_err(char **myarray, int num)// **myarray不能轉換為myarray[10][30]
}}}//列印 排序
//封裝成函式
void main()
;//myarray: 編譯器只會關心:有10行 ,每行30列。。。。。幹什麼?myarray+1 多維陣列名的本質,
//列印
printf("排序之前\n");
printmyarray02(myarray, num);
sortmyarray02(myarray, num);
//列印
printf("排序之後\n");
printmyarray02(myarray, num);
printf("hello...\n");
system("pause");
return ;
}
3 第三種: 手工申請二維記憶體:char **p2 = null;
#include #include #include char **getmem41(int num)
for (i=0; i0 )
}}}void getmem41_free(char **p2, int num)
與memset比較;memset效率較高。
3 技術盲點
a)陣列首元素的位址和陣列位址是兩個不同的概念
b)陣列名代表陣列首元素的位址,它是個常量
c)陣列首元素的位址和陣列的位址值相等
4 陣列型別
自定義陣列型別
typedef int(myint5)[5]; //int
typedef float(myfloat10)[10];
myint5 array; 《=》 int array[5];
myfloat10 farray
5 陣列指標型別
陣列指標用於指向乙個陣列
宣告乙個陣列指標型別
typedef int (*mypointer)[5];
mypointer mypoint;
for (i=0; i<5; i++)
}
6 多維陣列本質
char cbuf[30]; // cbuf(1級指標)代表陣列首元素的位址。。。&cbuf(二級指標)代表整個陣列的位址
char array[10][30]; //array是二級指標
(array+i) //相當於整個第i行的陣列位址 //二級指標&cbuf
(*(array+i))//一維陣列的首位址 cbuf
(*(array+i))+j //相當於第i行第j列的位址了把。。。。&array[i][j]
*((*(array+i))+j) //相當於第i行第j列的位址了把。。。。<====>array[i][j]
八 結構體專題
1結構體變數定義方法
a) 定義型別用型別定義變數
struct _student
;_student s1 ,s2;
b) 定義型別的同時,定義變數;
struct _student
s1, s2; //定義型別的同時,定義變數;
c) 直接定義結構體變數;
struct
s3,s4; //直接定義結構體變數
2 初始化的幾種方法
a) struct _teacher t4 = ;
b)
struct dog1
d5 = ;
c)
struct
d6 = ;
3 結構體做函式引數
a)
void sortteacer(teacher *array, int num)
}}}
b)
int createteacher02(teacher **pt, int num)
memset(tmp, 0, sizeof(teacher) * num);
for (i=0; i*pt = tmp; //二級指標 形參 去間接的修改 實參 的值
return 0; //
}
效能提高 (二)資源來自本地
資源來自本地的時候,那麼和前面一篇所講的,在效能上有什麼不同呢。所以在本地獲取如assets裡的資源的時候,只需要乙個執行緒安全的map即可。下面給出 public class testresourceutils 查詢某一型別的資源 maptypecache if mresourcecache.co...
演算法提高 二分法查詢陣列元素
資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 用遞迴函式實現二分法查詢陣列元素。補充 要求給定陣列採用如下 定義 int data 200 for i 0 i 200 i data i 4 i 6 輸入格式 輸入乙個待查詢的整數 該整數一定在陣列data中 輸出格式 該整數在陣...
c語言提高
當在大學期間學習了c語言以後發現自己的真的對程式設計只是停留在初級階段,沒有理解程式設計的思維或者懂自己的腦子去思考解決問題的能力。這就是大學缺少思考帶來的結果。當面試幾次發現,自己的能力真的不行的時候,不由得恐懼起來。先寫乙個面試題目吧,面試公司是一家叫做瑞斯康達科技發展 題目很簡單,在選擇題中,...