C語言提高 二

2021-08-21 20:56:15 字數 2982 閱讀 6549

六 二級指標三種記憶體模型

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語言以後發現自己的真的對程式設計只是停留在初級階段,沒有理解程式設計的思維或者懂自己的腦子去思考解決問題的能力。這就是大學缺少思考帶來的結果。當面試幾次發現,自己的能力真的不行的時候,不由得恐懼起來。先寫乙個面試題目吧,面試公司是一家叫做瑞斯康達科技發展 題目很簡單,在選擇題中,...