现在的问题是关于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数组。
谢谢你们提前。顺便说一句,可能有更好的其他方法来做到这一点,但我必须学习这种方式。
上述代码中的两个宏如何工作?