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

来源:互联网 发布:php 获取数组某个元素 编辑:程序博客网 时间:2024/05/17 21:58


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


0 0
原创粉丝点击