您的位置:首页 > 编程语言 > C语言/C++

C语言基础——笔记整理2

2015-05-15 21:04 288 查看
1.定义指向函数的指针

void haha(double num1, char *s1, int num2)
{
}
void(*p)(double, char *, int);
p = haha; // 或者double (*p)(double, char *, int) = haha;


如何间接调用函数利用指向函数的指针调用

1> p(10.7, "jack", 10);2> (*p)(10.7, "jack", 10);

2.局部变量和全局变量(根据根据变量的作用域划分)

2.1.局部变量:

1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)

2> 作用域:从定义变量的那一行开始,一直到代码块结束

3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收

4> 没有固定的初始值

2. 2.全局变量 :

1> 定义:在函数外面定义的变量

2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)

3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁

4> 默认的初始值就是0

3.结构体

1> 可以由不同类型的数据组成

2> 先定义类型,再利用类型定义变量

与数组的区别:

数组

1> 只能由同一种类型的数据组成

2> 定义:数据类型 数组名[元素个数];

定义一个结构体类型:

struct Person
{ // 里面的3个变量,可以称为是结构体的成员或者属性 i
nt age; // 年龄
double height; // 身高
char *name; // 姓名
};


//根据结构体类型,定义结构体变量

struct Person p = {20, 1.58, "david"};


以下定义结构体变量写法错误:

错误1. 不能定义完变量名之后再全部初始化赋值,应该定义完成同时赋值。

/

*错误写法
struct Person p2;
p2 = {30, 1.67, "david"};
*/
/*正确写法
p.age = 30;
p.name = "david";
p.height = 1.67;
*/


注意:结构体类型不能重复定义例如

struct Student
{ int age;
};
struct Student
{
double height;
};
struct Student stu;


虽然内部属性不一样,但是C语言不允许在一个作用域有重名的结构体类型,编译器还是会报重复定义的错

定义结构体数组:

struct RankRecord
{
int no; // 序号
int score; // 积分
char *name; // 名称
};
struct RankRecord records[3] =
{
{1, "jack", 5000},
{2, "jim", 500},
{3, "jake",300}
};


4.指向结构体的指针

struct Student
{
int no; int age;
};

// 结构体变量
struct Student stu = {1, 20};

// 指针变量p将来指向struct Student类型的数据
struct Student *p;

// 指针变量p指向了stu变量
p = &stu;


访问结构体变量成员的三种方式:

// 1:stu.age, stu.no
// 2: (*p).age, (*p).no
// 3: p->age, p->no
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: