按照字母顺序排序
sort(char *arr[], int n)
{
int i, j;
char* temp;
for (i = 0; i < n; i++)
{
for (int j = n - 1; j >= i; j--)
//for(j=i+1;j<n;j++)
{
if (strcmp(arr[i],arr[j]) > 0)
{
temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
}
int main()
{
int n = 12;
char ** p;
int i = 0;
char* month[] =
{
"January",
"Feruary",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"Novermber",
"December"
};
p = month;
sort(p, n);
for (i = 0; i < n; i++)
printf("%s\n", month[i]);
return 0;
}
int *p=arr;
arr[2]<==>*(p+2)<==>*(arr+2)<==>2[arr]
struct stu *ps = s(自定义结构体)
输出
printf("%s\n", ps ->sb.c)
printf("%s, (*ps).sb.c
打印s的内容
printf("%s,%d,%lf", t.sb.c, t.sb.s, t.sb.d);
printf("%s,%d,%lf",s); //错误,不能直接将一个结构体变量作为一个整体输入或输出。
传值调用和传址调用
//写一个函数输出
Printf_s(struct stu p) ---> printf_s(s)
Printf_s(struct stu *ps) ---> printf_s(&s)
函数调用的参数压栈: 栈,是一种数据结构。
特点:先进后出,后进先出。
( 取自:鹏哥c语言)
每一个函数调用都会在内存的栈区上开辟一个空间
用指针改变结构体成员的值
struct student //这个要在最前面
{
int age;
};
Add(struct student* ps)
{
ps->age += 1;
}
void main()
{
struct student z ={20};
//z.age = 20;
printf("%d\n", z.age);
Add(&z);
printf("%d\n", z.age);
}
几种输出方式
struct teacher
{
char name[20];
int age;
int time;
};
zhangsan = { "zhangsan",40,10 };
int main()
{
struct teacher zhangsan = { "zhangsan",40,10 };
struct teacher * ps = &zhangsan; //注意这里是取地址,不要忘记
//printf("%s,%d,%d\n", zhangsan.name, zhangsan.age, zhangsan.time);
printf("%s,%d,%d\n",(*ps).name, (*ps).age, (*ps).time);
printf("%s,%d,%d\n",ps->name, ps->age, ps->time);
return 0;
}