`

C语言基础九

c 
阅读更多
在声明全局变量的时候前面加关键字extern可以让当前源文件使用其他源文件中声明的全局变量

使用static关键字声明的全局变量叫做静态全局变量,它的作用域被限制在声明它的那个源文件内部。
static也可以用来声明函数,效果和静态全局变量一样

Makefile用来完成程序编译过程的管理,make工具使用Makefile文件完成管理工作。

结构体可以用来把多个不同类型的变量合并成一个整体,使用方法如下
struct student {
    int age;
char gender;
float heigt;
};
其中student表示结构体名称,大括号内部是子变量声明。结构体声明不会创建新变量,所以不能进行初始化。
结构体使用方法如下
struct student student;
其中struct student表示结构体数据类型,后面的student表示结构体变量名称。这里可以使用类似数组的初始化语法进行初始化。

typedef关键字用来给数据类型起别名,只能使用typedef关键字

如果希望在两个函数之间传递一个结构体变量,则应该使用结构体变量的地址作为参数或返回值。

一个变量的地址应该是它自身大小的整数倍,double类型的变量地址是4的整数倍。我们把这个规律叫做数据对齐。

一个结构体变量内部各子变量之间可能会存在空隙,这是由数据对齐造成的。

一个结构体变量的大小一定是内部最大子变量大小的整数倍,double类型的子变量大小按照4处理。这会造成结构体变量最后出现浪费的字节,这叫做补齐。

使用位域可以节省结构体所占空间的大小,方法如下
typedef struct {
    int value:3;
int value2:3;
} s1;
其中3表示占3个二进制位
使用了位域的子变量没有地址

最高数位存储在最小地址的字节中叫大端存储方式
最小数位存储在最小地址的字节中叫小端存储方式

枚举类型可以把一组名称转换成整数,从0开始。使用方法如下
enum {CHUN, XIA, QIU, DONG};



//01main.c
#include <stdio.h>
#include "01mul.h"
extern int result;
int main() {
    mul(2, 4);
    printf("mul(2, 4)是%d\n", result);
    return 0;
}


//01mul.c
#include "01mul.h"
int result;
void mul(int value, int value1) {
    result = value * value1;
}


//01mul.h
#ifndef __01MUL_H__
#define __01MUL_H__
void mul(int, int);
#endif  //__01MUL_H__




//02struct.c
/*
	结构体练习
*/
#include <stdio.h>
/*struct student {
    int age;
	 char gender;
	 float height;
};
typedef struct student student;*/
typedef struct {
    int age;
	 char gender;
	 float height;
} student;
int main() {
    /*int age = 0;
	 char gender = 0;
	 float height = 0.0f;*/
    /*struct student {
        int age;
		  char gender;
		  float height;
	 } student;*/
    //struct student student;
	 student stu = {20, 'F', 1.70f};
	 printf("请输入年龄,性别和身高:");
	 scanf("%d %c %f", &stu.age, &stu.gender, &stu.height);
	 printf("年龄是%d,性别是%c,身高是%g\n", stu.age, stu.gender, stu.height);
    return 0;
}

//03type.c
/*
	typedef练习
*/
#include <stdio.h>
//#define  PINT       int*
typedef int*     PINT;
int main() {
    int value = 0;
    PINT p_value = &value, p_value1 = &value;
	 printf("*p_value是%d\n", *p_value);
	 printf("*p_value1是%d\n", *p_value1);
    return 0;
}


//04rank.c
/*
	结构体练习
*/
#include <stdio.h>
typedef struct {
    int chinese;
	 int math;
	 int english;
} student;
void read(student *p_stu) {
	 printf("请输入三个成绩:");
	 scanf("%d %d %d", &p_stu->chinese, &p_stu->math, &p_stu->english);
}
void print(student *p_stu) {
	 printf("语文成绩是%d,数学成绩是%d,英语成绩是%d\n", p_stu->chinese, p_stu->math, p_stu->english);
}
int main() {
    student stu;
	 read(&stu);
	 print(&stu);
    return 0;
}



//05sizeof.c
/*
	对齐,补齐练习
*/
#include <stdio.h>
typedef struct {
    char ch;
	 char ch1;
	 int value;
} s1;
typedef struct {
    char ch;
	 int value;
	 char ch1;
} s2;
int main() {
    printf("结构体大小是%d\n", sizeof(s1));
	 printf("结构体大小是%d\n", sizeof(s2));
    return 0;
}




//06bit.c
/*
	位域练习
*/
#include <stdio.h>
typedef struct {
    int value:3;
	 int value2:3;
} s1;
typedef struct {
    short value:3;
	 short value2:3;
} s2;
int main() {
    s1 s;
    printf("sizeof(s1)是%d\n", sizeof(s1));
	 printf("sizeof(s2)是%d\n", sizeof(s2));
	 //printf("&s.value2是%d\n", &s.value2);
    return 0;
}



//07union.c

/*
	联合练习
*/
#include <stdio.h>
/*union u1 {
    char ch[2];
	 int value;
};
typedef union u1 u1;*/
typedef union {
    char ch[2];
	 int value;
} u1;
int main() {
    printf("联合的大小是%d\n", sizeof(u1));
	 u1 u;
	 u.value = 0x12345678;
	 if (0x78 == u.ch[0]) {
        printf("小端\n");
	 }
	 else {
        printf("大端\n");
	 }
    return 0;
}




//08enum
/*
	枚举练习
*/
#include <stdio.h>
int main() {
    enum {CHUN, XIA, QIU = 6, DONG};
	 enum {NAN, NV};
	 printf("CHUN是%d\n", CHUN);
	 printf("DONG是%d\n", DONG);
	 printf("NAN是%d\n", NAN);
    return 0;
}

//Makefile
a.out : 01main.o 01mul.o 
	gcc 01mul.o 01main.o

01main.o : 01main.c 01mul.h
	gcc -c 01main.c

01mul.o : 01mul.c 01mul.h
	gcc -c 01mul.c

clean :
	rm *.o a.out




分享到:
评论

相关推荐

    C语言基础,详细讲解C语言的基础知识

    C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)...但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。

    一些C语言基础学习PPT--献给和我一样的C语言迷茫者

    一些C语言基础学习PPT--献给和我一样的C语言迷茫者 一共有9个PPT,涉及多项C语言基础。

    C语言基础学习ppt课件

    C语言基础课件对初学C语言者很有帮助,里面课件含有: 1.程序设计基础 2.数据类型 3.循环语句 4.数组 5.函数 6.指针 7.预处理命令 8.文件操作 9.结构体

    C语言基础训练

    C语言基础训练

    C语言基础教程 课件

    C 语言基础教程 第一章 C语言概述 第二章 程序的灵魂-算法 第三章 数据类型、运算符与表达式 第四章 顺序程序设计 第五章 选择结构程序设计 第六章 循环控制 第七章 数组 第八章 函数 第九章 预处理命令 第十章 ...

    C语言教学课件 C语言基础

    第一章 C语言概论 第二章 C语言基础 第三章 C语言的基本控制结构 第四章 数 组 第五章 指 针 第六章 函 数 第七章 结构与联合 第九章 文 件

    C语言基础(Day9)思维导图

    C语言基础(Day9)思维导图

    C语言基础.pdf

    C语言基础,共有九章内容,知识点清晰,内容丰富

    C语言的基础教程 TXT格式

    C 规定,标识符只能是字母(A~Z,a~z)、数字(0~9)、下划线()组成的字符串,并且其第一个字符必须是字母或下划线。 以下标识符是合法的: a,x, 3x,BOOK 1,sum5 以下标识符是非法的: 3s 以数字开头 s*T 出现非法...

    C语言基础教程 C语言程序设计 C语言入门教 第02章 -VC++开发环境 共9页.ppt

    C语言基础教程 C语言程序设计 C语言入门教 第02章 -VC++开发环境 共9页.ppt

    C语言重要基础——9条语句

    C语言重要基础内容。初学者看过会瞬间觉得C语言超级简单

    C语言教室 C语言基础课程

    第一章: C语言概论 第二章: 数据类型、运算符、表达式 第三章: C语言程序设计初步 第四章: 数组 第五章:函数 ...第九章:预处理 第十章:文件 附录一:Turbo C(V2.0)编译错误信息 附录二:Turbo C(V2.0)使用指南

    C语言基础教程TXT

    A.9 语句 A.10 外部说明 A.11 作用域与连接 A.12 预处理 A.13 语法 附录B 标准库 B.1 输入与输出:&lt;stdio.h&gt; B.2 字符类测试:&lt;ctype.h&gt; B.3 字符串函数:&lt;string.h&gt; B.4 数学函数:&lt;math.h&gt; B.5 实用函数...

    编程语言基础-C语言电子教案

    编程语言基础-C语言电子教案,共九章。

    C语言基础入门视频.txt

    本文是txt文本里面有网盘永久链接视频,C语言基础,包括:002第二章 数据类型,运算符和表达式01,007第三章 顺序程序设计01,014第四章 分支结构程序05,016第五章 循环控制结构程序01,027第六章 数组05,032第七...

    【C语言基础语法用例+两个基础实战游戏代码解析】.docx

    # C语言基础语法用例教程 本教程将为您介绍C语言的基础语法的使用案例知识。 ## 目录 1. [简介](#简介) 2. [变量和数据类型](#变量和数据类型) 3. [运算符](#运算符) 4. [控制流程](#控制流程) 5. [函数](#函数) ...

    c语言基础教程第九章联合和枚举.pdf

    c语言基础教程第九章联合和枚举.pdf

    C语言教程ppt C语言基础知识考试教程学习资料.rar

    C语言教程ppt C语言基础知识考试教程学习资料:CC1-预备知识 .PPTCC10-结构体.PPTCC2-VC++开发环境.pptCC3-C语言概述.PPTCC4-数据描述.PPTCC5(1)数据输入与输出.PPTCC5(2)程序流程设计.PPTCC6-数组.PPTCC7-函数....

    C语言基础学习代码

    博主学习C语言时敲下的代码,还不错,比较基础,包括剪刀石头布、找质数、快速找质数、21点游戏、九宫格等比较基础的代码集合。

    C语言基础知识教程、心得、源码示例讲解文档

    2.C语言基础: 数据类型、变量、常量、运算符、表达式等基础知识。 3.流程控制: 详解if、switch、for、while等条件与循环语句。 4.函数: 学习函数定义、函数声明、函数的调用等内容。 5.数组、字符串和指针: 掌握数组...

Global site tag (gtag.js) - Google Analytics