現在的問題是關於typedef和c樣式的字符串。 這是代碼。如何用typedef和指針聲明多維數組
#include <stdio.h>
#define C "BTP300", "BTD310", "BTI320", "BTS330"
typedef char* Course;// Line 1
#define CMP(a,b,c,d) ((a[(c)])d(b[(c)]))
int main(void) {
Course reference, test[] = {C}; //Line 2
sort(test,4,2);
reference=test[0];
difference(test, reference, 4);
return 0;
}
void sort(Course a[], int n, int k) {
int i, j;
Course temp;
for (i = n - 1; i > 0; i--) {
for (j = 0; j < i; j++) {
if (CMP(a[j],a[j+1],k,>)) {
temp = a[j];
a[j] = a[j+1];
a[j+1] = temp;
}
}
}
}
void difference(Course a[], Course reference, int n) {
int i;
for (i = 0; i < n; i++)
printf("%d ", ABS(a[i] - reference));
printf("\n");
}
這是我的理解: 道菜的是char類型的指針的別名。 -reference是一個char類型的指針。
我不知道或需要知道代碼背後的理論是: 1-什麼是測試[] ???我認爲它的char類型指針數組換句話說test [1]包含char * =「btd310」。(我不知道它的推理。)
2-如何訪問「d」中的「btd310」? 3-使用typedef int *我如何創建一個2維int數組?我一直在尋找類似
typedef int* arr;
void main(){
arr foo[]={{1,2},{3,4}}
}
顯然上面的代碼,我沒有工作,所以它的方式,將工作即我將得到二維int數組。
謝謝你們提前。順便說一句,可能有更好的其他方法來做到這一點,但我必須學習這種方式。
上述代碼中的兩個宏如何工作?