码迷,mamicode.com
首页 > 编程语言 > 详细

013-结构体-C语言笔记

时间:2015-10-08 23:03:27      阅读:283      评论:0      收藏:0      [点我收藏+]

标签:

学习目录

1.【掌握】返回指针的函数

2.【掌握】指向函数的指针

3.【掌握】结构体的声明

4.【掌握】结构体与数组

5.【掌握】结构体与指针

6.【掌握】结构体的嵌套

7.【掌握】结构体与函数

一、返回指针的函数

指针作为函数的返回值

指针是可以作为函数的返回值的,不能返回局部变量的指针,因为当函数执行结束后指针变量就释放了。如果我们真的需要返回一个指针变量,那就要保证我 们的函数执行完毕之后,指针指向的变量仍然存储在内存之中。那我们可以将变量创建在堆空间中,使用malloc或者calloc申请空间。或者直接声明为 全局变量或者用static修饰的局部变量。

如果函数需要返回一个字符串,我们可以返回(char *)类型字符串,不要使用字符数组,因为字符数组在函数执行结束后,就释放了。而使用(char *)声明的字符串是存储在数据段的,直到程序执行结束才会释放。

 

二、指向函数的指针

程序在运行的时候,函数是存储在内存(代码段)之中的,存储函数的空间肯定也是有地址的,所以我们可以用指针指向函数。

语法:返回值类型 (*指针名)([参数列表]);

注意:

1.函数的地址就是函数名。

2.指向函数的指针变量,本质上还是一个变量,那么我们就可以声明、赋值给另外一个同类型的指针变量使用。

无参无返回值

有参有返回值

应用场景:多种方式对字符串数组进行排序

 

三、结构体的声明

在实际应用中,我们通常需要由不同类型的数据来构成一个整体,比如学生信息这个整体可以由姓名、年龄、身高等数据构成,这些数据都具有不同的数据类 型,姓名可以是字符指针类型,年龄可以是整型,身高可以是浮点型。C语言提供了一种构造类型来解决这个问题,由程序员自己声明多个数据类型组成一个整体当 做一种新的数据类型,这个玩意就是结构体。结构体里的声明的多个数据类型变量叫做结构体的成员。

声明结构体类型语法:

struct 类型名 {

    数据类型1 成员名1;

    数据类型2 成员名2;

    ..........

};

声明结构体变量语法:struct 类型名 变量名;

为结构体变量中的成员赋值

使用结构体注意:

1.这个新声明的结构体也是一个数据类型,由程序员自己声明的新类型,所以可以声明这个结构体类型的变量。

2.定义在大括号之中的变量,叫新类型的成员。必须要先声明结构体类型,再声明结构体变量。

3.结构体类型名首字母大写,并且结构体末尾需要加分号,

4.声明一个结构体变量没有初始化,成员的值是垃圾值,如果声明的同时初始化了部分,其他成员初始化为0。

5.相同类型的结构体变量是可以相互赋值的,赋值是将原结构体中的每一个成员的值挨个拷贝给目标结构体变量。

6.结构体变量名,直接代表整个结构体变量。在外面学习到的所有数据类型中,只有数组名、函数名才代表他们的地址。其他都是代表变量本身

四、结构体与数组

语法:struct 结构体类型名 数组名[长度];

 

五、结构体与指针

结构体变量也是一个变量,那么这个结构体变量一定是有内存地址的,所以我们就可以搞个指针指向这个结构体变量。然后我们就可以通过指针间接操作结构体变量。

语法:struct 结构体类型名 *指针名;

 

六、结构体的嵌套

我们在为结构体写成员的时候,发现某个成员也是一个需要多个数据组成一个整体的数据,这个时候我们就可以使用结构体嵌套。在结构体内声明另一个结构体类型的变量作为成员来使用。

 

七、结构体与函数

结构体作为函数的参数

结构体作为函数的返回值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
#include <stdio.h>
 
//人结构体类型
structPerson{
    char*name;
    intage;
};
 
structPersongetStu(){
    structPersonstu={"静静",19};
    returnstu;//是返回一个变量的值
}
intmain(){
    
    structPersonstu=getStu();
    printf("%s %d\n",stu.name,stu.age);
    return0;
}

 

 

013-结构体-C语言笔记

标签:

原文地址:http://www.cnblogs.com/liehuntianshi/p/4862391.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!