typedef

1.作用:给已经存在的类型起一个新的名称

2.使用场合:

1> 基本数据类型

2> 指针

3> 结构体

4> 枚举

5> 指向函数的指针

#include <stdio.h>

typedef int MyInt;
typedef MyInt MyInt2; // 给指针类型char *起一个新的类型名称String
typedef char * String; /*
struct Student
{
int age;
};
typedef struct Student MyStu;
*/ /*
typedef struct Student
{
int age;
} MyStu;
*/ typedef struct
{
int age;
} MyStu; /*
枚举型
enum Sex {Man, Woman};
typedef enum Sex MySex;
*/ typedef enum {
Man,
Woman
} MySex; typedef int (*MyPoint)(int, int); int minus(int a, int b)
{
return a - b;
} int sum(int a, int b)
{
return a + b;
}
/*
struct Person
{
int age;
}; typedef struct Person * PersonPoint;
*/ typedef struct Person
{
int age;
} * PersonPoint; int main()
{
// 定义结构体变量
struct Person p = {20}; PersonPoint p2 = &p; //struct Person *p2 = &p; //MyPoint p = sum;
//MyPoint p2 = minus;
//int (*p)(int, int) = sum; //int (*p2)(int, int) = minus; //p(10, 11); //MySex s = Man;
//enum Sex s = Man;
//enum Sex s2 = Woman; // struct Student stu3;
//MyStu stu = {20};
//MyStu stu2= {21}; return 0;
} void test2()
{
String name = "jack"; printf("%s\n", name);
} void test()
{
int a;
MyInt i = 10;
MyInt2 c = 20; MyInt b1, b2; printf("c is %d\n", c);
}

static

1.作用:

static修饰局部变量的使用场合:

1.如果某个函数的调用频率特别高

2.这个函数内部的某个变量值是固定不变的

void test()
{
static double pi = 3.14; double zc = 2 * pi * 10; int a = 0;
a++;
printf("a的值是%d\n", a); // 1 /*
static修饰局部变量:
1> 延长局部变量的生命周期:程序结束的时候,局部变量才会被销毁
2> 并没有改变局部变量的作用域
3> 所有的test函数都共享着一个变量b
*/
static int b = 0;
b++;
printf("b的值是%d\n", b); // 3
} int main()
{
for (int i = 0; i<100; i++) {
test();
} test(); test(); test(); return 0;
}

全局变量分2种:

外部变量:定义的变量能被本文件和其他文件访问

1> 默认情况下,所有的全局变量都是外部变量

1> 不同文件中的同名外部变量,都代表着同一个变量

内部变量:定义的变量只能被本文件访问,不能被其他文件访问

1> 不同文件中的同名内部变量,互不影响

static对变量的作用:

定义一个内部变量

extern对变量的作用:

声明一个外部变量

static对函数的作用:

定义和声明一个内部函数

extern对函数的作用:

定义和声明一个外部函数(可以省略)

typedef , static和 extern的更多相关文章

  1. C语言-07-预处理、typedef、static和extern

    预处理 1> 使用注意 以#开头 在代码被翻译成0和1之前执行 预处理指令可以出现在任何位置 作用域是从编写指令那一行开始到文件结束 2> 宏定义 基本使用 ① 使用#define定义 ② ...

  2. typedef,static,const用法

    一.typedef主要功能是定义一个已存在类型的别名,但是和宏并存 宏与typedef区别 1.宏定义只是简单的字符串替换 2.typedef定义的类型是类型的别名,typedef后面是一个整体声明, ...

  3. 16-static和extern关键字2-对变量的作用

    上一讲介绍了static和extern对函数的作用,static用来定义一个内部函数,不允许其他文件访问:extern用来定义和声明一个外部函数,允许其他文件访问.static和extern对变量也有 ...

  4. 15-static和extern关键字1-对函数的作用

    一.extern与函数 如果一个程序中有多个源文件(.c),编译成功会生成对应的多个目标文件(.obj),这些目标文件还不能单独运行,因为这些目标文件之间可能会有关联,比如a.obj可能会调用c.ob ...

  5. const、static和extern的正确使用方式

    我们在看一些大牛的第三方时,里面会出现很多const.static和extern,尤其是const和static,const和extern的结合使用,直接令很多小伙伴懵逼了,今天就详细讲解一下这三个关 ...

  6. 《OOC》笔记(1)——C语言const、static和extern的用法

    <OOC>笔记(1)——C语言const.static和extern的用法 C语言中const关键字用法不少,我只喜欢两种用法.一是用于修饰函数形参,二是用于修饰全局变量和局部变量. 用c ...

  7. 转载 浅谈C/C++中的static和extern关键字

    浅谈C/C++中的static和extern关键字 2011-04-21 16:57 海子 博客园 字号:T | T   static是C++中常用的修饰符,它被用来控制变量的存贮方式和可见性.ext ...

  8. static和extern关键字 对函数的作用

    本文目录 • 一.extern与函数 • 二.static与函数 • 三.static.extern与函数的总结说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能 ...

  9. static和extern关键字 对变量的作用

    本文目录 • 一.在Java中,全局变量的定义没有严格的位置规定 • 二.在C语言中,全局变量定义的位置是有限制的 • 三.重复定义同一个变量 • 四.不同源文件中的同名变量 • 五.static关键 ...

随机推荐

  1. 数学概念——A 几何概型

    You are going from Dhaka to Chittagong by train and you came to know one of your old friends is goin ...

  2. openStack controller 管理网口TX数据量非常大 网络总是丢包

  3. 20个高级Java面试题

    这是一个高级Java面试系列题中的第一部分.这一部分论述了可变参数,断言,垃圾回收,初始化器,令牌化,日期,日历等等Java核心问题. 程序员面试指南:https://www.youtube.com/ ...

  4. IO流--转载

    第 1 部分 从输出流中读取 http://www.ibm.com/developerworks/cn/java/j-io1/ 自早期基于浏览器的 applet 和简单应用程序以来,Java 平台已有 ...

  5. 屏幕录像专家V7.5(完美破解版,无水印)下载

    分享一个屏幕录像工具.屏幕录像专家V7.5(完美破解版,无水印).经测试可破解使用. 破解注册 点击安装.EXE,安装软件. 点击安装好的屏幕录像专家,会给你一个机器码,要你注册,复制下这个机器码(下 ...

  6. java 线程三种实现方式

    1继承thread public class MultiThread1 extends Thread{ public void run(){ for(int i=0; i<7; i++){ Sy ...

  7. Android 静默安装/后台安装

    Android实现静默安装其实很简单,今天在网上找资料找半天都说的很复杂,什么需要系统安装权限.调用系统隐藏的api.需要系统环境下编译.需要跟systemUI同进程什么的.我不知道他们真的实现了静默 ...

  8. C# 邮件发送注意事项

    使用QQ邮箱作为smtp服务器时,遇到 "命令顺序不正确. 服务器响应为: AUTH first..",解决办法: smtpClient.UseDefaultCredentials ...

  9. MySQL存储过程的基本函数(三)

    (1).字符串类 首先定义一个字符串变量:set @str="lxl"; CHARSET(str) //返回字串字符集 select charset(@str);+-------- ...

  10. Word查找和替换通配符(完全版)

    Word查找栏代码·通配符一览表 序号 清除使用通配符复选框 勾选使用通配符复选框 特殊字符 代码 特殊字符 代码or通配符 1 任意单个字符 ^? 任意单个字符 ? 2 任意数字 ^# 任意数字(单 ...