#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct Teacher
{
char name[50];
int age;
};
struct Teacher t1;
struct Teacher2
{
char name[50];
int age;
}t3 = {"tom", 66};
struct
{
char name[50];
int age;
}t5;
struct Teacher t7 = { "lily", 18 };
typedef struct Teacher3
{
char name[50];
int age;
}Teacher3;
struct Teacher3 t8;
Teacher3 t9;
int main(void)
{
struct Teacher t2;
printf("%s, %d\n", t7.name, t7.age);
strcpy(t2.name, "xiaoming");
t2.age = 22;
printf("%s, %d\n", t2.name, t2.age);
struct Teacher *p = NULL;
p = &t2;
strcpy(p->name, "xiaojiang");
p->age = 22;
printf("%s, %d\n", p->name, p->age);
return 0;
}
可以在栈上分配内存,可以在堆上分配内存
#define _CRT_SECURE_NO_WARNINGS
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
typedef struct Teacher
{
char name[64];
int age ;
int id;
}Teacher;
void printTeacher(Teacher *array, int num)
{
int i = 0;
if(array == NULL)
return ;
for (i=0; i<num; i++)
{
printf("age:%d \n", array[i].age);
}
}
void sortTeacer(Teacher *array, int num)
{
int i,j;
Teacher tmp;
for (i=0; i<num; i++)
{
for (j=i+1; j<num; j++)
{
if (array[i].age > array[j].age)
{
tmp = array[i];
array[i] = array[j];
array[j] = tmp;
}
}
}
}
#if 0
int main(int argc, const char * argv[])
{
int i = 0;
Teacher Array[3];
int num = 3;
for (i=0; i<num; i++)
{
printf("\nplease enter age:");
scanf("%d", &(Array[i].age) );
}
printTeacher(Array, num);
sortTeacer(Array, num);
printf("排序之后\n");
printTeacher(Array, num);
return 0;
}
#else
Teacher * createTeacher(int num)
{
Teacher * tmp = NULL;
tmp = (Teacher *)malloc(sizeof(Teacher) * num);
if (tmp == NULL)
{
return NULL;
}
return tmp;
}
void FreeTeacher(Teacher *p)
{
if (p != NULL)
{
free(p);
p = NULL;
}
return ;
}
int main(int argc, const char * argv[])
{
int i = 0;
int num = 3;
Teacher *pArray = NULL;
pArray = createTeacher(num);
for (i=0; i<num; i++)
{
printf("\nplease enter age:");
scanf("%d", & (pArray[i].age) );
}
printTeacher(pArray, num);
sortTeacer(pArray, num);
printf("排序之后\n");
printTeacher(pArray, num);
FreeTeacher(pArray);
return 0;
}
#endif
测试结果