一、函数
void test(void){ //void可以不写 //函数体中不用写返回函数(return)}
test(int a, int b){ //返回值类型可以不写,如果不写,默认为返回int类型}
int a = 10; //定义了一个int类型的变量int *pa = NULL; //定义了一个int类型的指针pa = &a; //将int类型变量a的地址赋值给pa指针,或者说pa指针指向了变量a*pa = 20; //通过指针简介修改变量a的值,*称为取消引用运算符或间接运算符 二、指针
//使用char数组存储字符串,这个叫做字符串变量char str1[] = “luoguankun”;//使用指针存储字符串,它指向字符串的首字母//这个称为字符串常量,如果再声明一个字符串值一样的指针字符串//那么他们会指向同一 个字符串,而不会创建一个新的char *str2 = “luoguankun”;
int *name[5]; name[1] //取出元素下标为1的元素(指针)
//定义了一个加法函数int sum(int a, int b){return a+b;}//将定义好的指针指向函数//首先声明一个指针int (*p)(int,int); //其中(*p)代表将来指向的函数,(*p)左右分别为返回值类型和形参定义p = sum; //将指针p指向test函数p(10,22); //通过指针调用函数,它等于sum(10,22);当然在调用之前别忘了声明函数
初学者有什么不懂的可以私信我,需要系统学习资料和系统学习框架图的同学,可关注小编头条号,欢迎留言评论和私信小编。【私信方法】文章上方处点击“作者头像”,进入作者首页,在作者主页上方点击“关注”旁边的“发私信”即可。私信内容:学习帮助。 三、结构体 数组只能存储一组同类型的数据,而结构体可以保存一组不同类型的数据
//以下定义没有分配存储空间,仅仅定义类型 struct Person { int age; int sex; char *name;};
struct Person p;
p.age = 13; //一种方式//另一种方式,初始化的同时进行赋值,同时进行分配存储空间//结构体的存储空间是最大成员字节数的倍数,称为补齐算法struct Person p = {13,1,”luoguankun”};p = {13,1,”luoguankun”}; //这是错误的!只能在定义结构体时赋值
printf(“age=%d,sex=%d,name=%s”,p.age,p.sex,p.name);
//定义类型的同时定义变量,甚至可以不写类型名称,称为匿名结构体,它不能被重用//并且变量名不能重复struct Student{ int age;}stu;
//定义结构体类型struct Person{ int age; double height; char *name;}stu;//定义结构体数组变量并赋值初始化struct Person stu[3] ={ {11,12.1,'o'}, {12,12.2,'u'}, {13,12.3,”l'}};//循环遍历结构体数组,并打印for (int i = 0; i < sizeof(stu)="" sizeof(stu[0]);="" i++)="" {="" printf('age="%d,height=%.1f,name=%s\n',stu[i].age,stu[i].height,stu[i].name);}//stu[i]" =="" {4,1.22,”dkdk”};="" 这是错误的stu[i].age="4;">
//省略类型定义,如上,下面使用结构体变量并赋值初始化struct Person stu = {11, 1.73, '罗冠坤'}; //定义了一个指针p并指向结构体变量stustruct Person *p = &stu;//三种输出方法都可以输出数据,作用相同,其中p->成员名的方式较为新颖printf('age=%d,height=%.2f,name=%s\n',stu.age,stu.height,stu.name);printf('age=%d,height=%.2f,name=%s\n',(*p).age,(*p).height,(*p).name);printf(“age=%d,height=%.2f,name=%s\n',p->age,p->height,p->name);//赋值方法的调用方法相同
int main(){ struct Date{ int year; //年 int month; //月 int day; //日 }; struct Student{ int no; //学号 //嵌套两个Date来分别表示生日和入学日期 struct Date birthday; //生日 struct Date SchoolDay; //入学日期 }; struct Student stu = { 1, {1989,10,24}, {2009, 9, 1} }; //间接取值,嵌套访问 printf('学号为:%d\n生日为:%d年%d月%d日\n入学日期为:%d年%d月%d日\n', stu.no,stu.birthday.year,stu.birthday.month,stu.birthday.day, stu.SchoolDay.year,stu.SchoolDay.month,stu.SchoolDay.day);return 0; |
|