【发布时间】:2022-01-15 03:36:42
【问题描述】:
可能已经有人问过以下问题。另外,我知道有很多帖子讨论这个话题。但是,经过搜索,我找不到这些具体问题的答案。
注意:问题出现在代码下方。
代码:
#include <stdio.h>
#define ARRAY_SIZE 3
typedef struct
{
const char* name;
const char* color;
int age;
}Cat;
void printCat1(Cat* cat)
{
printf("\n%s\n", cat->name);
printf("%s\n", cat->color);
printf("%d\n", cat->age);
printf("\n");
}
void printCat2(Cat cat)
{
printf("\n%s\n", cat.name);
printf("%s\n", cat.color);
printf("%d\n", cat.age);
printf("\n");
}
void printCatArray(Cat catArr[])
{
int i = 0;
for (i = 0; i < ARRAY_SIZE; i++)
{
//WHICH OPTION IS BETTER? (printCat1 OR printCat2)
//CALLING TO PRINTING FUNCTION.
}
}
void swap(_____ cat1, _____ cat2)
{
Cat temp = //cat1 or *cat1 ?
//cat1 = cat2 or *cat1 = *cat2?
cat2 = temp;
}
void sortbyage(Cat catarr[])
{
int i, j;
for (i = 0; i < ARRAY_SIZE - 1; i++)
for (j = 1; j < ARRAY_SIZE; j++)
if (catarr[i].age > catarr[j].age)
swap(______, ______]);
}
int main() {
Cat catArray[ARRAY_SIZE] =
{ {"cat1", "white", 1},
{"cat2", "black", 2},
{"cat3", "gray", 3} };
printCatArray(catArray);
return 0;
}
问题:
1。打印单个 cat 结构数据的两个函数有什么区别?
2。哪种打印功能更好用,为什么?如果您愿意解释,这将是必不可少且有意义的。
3。写什么更好,为什么?无效交换(Cat cat1,Cat cat2)或无效交换(Cat* cat1,Cat* cat2)
4。从函数 soryByAge, swap(&catArr[i], &catArr[j]) 调用交换函数是否正确?你会写得不一样吗?
5。以下代码行是正确的: catArray[2] = catArray[1]; 很高兴了解它的实际作用。
如果有一个或多个问题不够清楚,我很乐意澄清。
非常感谢您!
【问题讨论】:
标签: arrays c function pointers struct