在學校好像很少被要求程式應該怎麼寫
程式怎麼寫才會比較精簡
根據上一篇的學習
我把我寫的程式寄給了面試官
沒想到得到了更多的回應
面試官除了指出我的問題點以外
還要我試著比較二者的差異性
前者是我精簡後的結果
後者是面試官給我的參考答案
為了方便比較,我這裡使用了macro的方式,方便比較二者的差異性
#define test_1
//***************************************************************//
//
// 利用陣列與指標的方式
//
//***************************************************************//
#if defined test_1
int posi;
int str_test(char *ptr1,char c);
int main(void){
char test_a[]="Rock Solid, Heart Touching.";
posi=str_test(test_a,'o');
return 0;
}
int str_test(char *ptr1,char c){
int i=0;
while(ptr1[i] != 0x00){
if (ptr1[i]==c){return i;}
i++;
}
return -1;
}
//***************************************************************//
//
// 比較str_test的執行效率,要60個指令時間
//
//***************************************************************//
//***************************************************************//
//
// 比較這裡的code size 要261
//
//***************************************************************//
//***************************************************************//
//
// 利用純指標的方式
//
//***************************************************************//
#elif defined test_2
int posi;
int find_char( char* str, char target); // 實作這個函式
int main(void){
char* str = "Rock Solid, Heart Touching.";
posi=find_char( str, 'o');
return 0;
}
int find_char(char* str, char target){
int result = 0;
while ( *str != '\0'){
if ( *str == target){
return result;
}
result++;
str++;
}
return -1;
}
//***************************************************************//
//
// 比較find_char的執行效率,只要55個指令時間,快了5個指令時間
//
//***************************************************************//
//***************************************************************//
//
// 比較這裡的code size 只要255,少了6個指令空間
//
//***************************************************************//
嗯,看起來程式技術不只關系了code size,也關系著執行速度
愈來愈期待我的面試結果了
學弟說我遇到的面試官是一個會移動的compiler
假如可以錄取的話,應該可以在裡面學到更多才是