C语言基础——笔记整理2
2015-05-15 21:04
288 查看
1.定义指向函数的指针
如何间接调用函数利用指向函数的指针调用
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> 定义:数据类型 数组名[元素个数];
定义一个结构体类型:
//根据结构体类型,定义结构体变量
以下定义结构体变量写法错误:
错误1. 不能定义完变量名之后再全部初始化赋值,应该定义完成同时赋值。
/
注意:结构体类型不能重复定义例如
虽然内部属性不一样,但是C语言不允许在一个作用域有重名的结构体类型,编译器还是会报重复定义的错
定义结构体数组:
4.指向结构体的指针
访问结构体变量成员的三种方式:
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
相关文章推荐
- C语言基础——学习笔记整理3
- C#笔记整理(2)C#语言基础
- C语言基础——知识点笔记整理1
- Java笔记整理——Java语言基础
- Java笔记整理(2)Java语言基础
- 【C语言基础一百题1】C语言基础100题全新整理版
- 2017/12/28C语言笔记整理
- C#学习笔记(有C,C++,JAVA语言基础)
- 汇编语言:基础知识(第一章)——学习笔记
- Swift语言基础笔记(一)
- Ruby元编程基础学习笔记整理
- 【学习笔记之汇编语言】【一】基础知识
- JAVA语言基础 +JAVA学习笔记-DAY04
- Java笔记之计算机基础知识$java语言基础
- 形式语言与自动机_笔记整理(六)_Petri网与时间自动机
- 笔记整理(java基础九-----String,StringBuffer,StringBuilder)
- Java基础笔记整理---【04】基本数据类型
- C语言学习笔记之基础篇_Format格式完全攻略(格式化字符)
- java基础笔记整理
- wml语言学习笔记--基础教程(转)