【发布时间】:2024-04-24 14:05:02
【问题描述】:
现在的问题是关于 typedef 和 c 样式字符串。 这是代码。
#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");
}
这是我的理解: -Course 是 char 类型指针的别名。 -reference是char类型的指针。
我不知道或需要知道代码背后的理论是: 1-什么是测试[] ???我认为它是一个 char 类型的指针数组,换句话说 test[1] 包含 char*="btd310" 。(我不知道它的推理。)
2- 我如何访问“btd310”中的“d”? 3- 使用 typedef int* 如何创建二维 int 数组?我正在寻找类似的东西
typedef int* arr;
void main(){
arr foo[]={{1,2},{3,4}}
}
显然上面的代码对我不起作用,所以它将以哪种方式工作,即我将获得 2d int 数组。
提前谢谢大家。顺便说一句,可能还有其他更好的方法可以做到这一点,但我必须学习这种方式。
上面代码中的两个宏是如何工作的?
【问题讨论】:
标签: c++ arrays pointers multidimensional-array typedef