`

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语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...

    C语言基础教程 吕凤翥

    《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...

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

    C语言基础教程是一门针对初学者的编程课程,旨在教授如何使用C语言进行程序设计。C语言是一种广泛应用的计算机编程语言,因其高效、灵活和强大的功能而被广泛应用于系统编程、软件开发、嵌入式系统等多个领域。本...

    C语言基础学习包

    【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...

    c语言基础教材 零基础学习c语言

    "C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...

    C语言基础.ppt

    **C语言基础** C语言是一种强大的、通用的编程语言,起源于1972年,由丹尼斯·里奇在贝尔实验室开发。它是许多现代编程语言的基石,因其高效、灵活和可移植性而广受程序员喜爱。"C语言基础.ppt"这份教程将引导初学...

    C语言基础练习面试题

    本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...

    C语言课件(C语言基础)

    C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言,它的语法简洁明了,是学习其他编程语言的良好基础。本课件集合涵盖了C语言的基础知识,适合初学者入门学习,同时也对准备二级考试的...

    C语言基础 C语言基础 C语言基础 C语言基础.zip

    C语言的基础知识涵盖了语法、数据类型、控制结构、函数、指针等多个方面。 1. **语法基础**:C语言的语法结构清晰,主要包括声明、定义、表达式和语句。例如,声明变量(如`int a;`)、定义变量(如`int a = 10;`)...

    c语言基础练习题及答案

    根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...

    C语言基础程序代码合集

    本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...

    C语言基础知识PPT文件

    这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...

    C语言基础 谭浩强.pdf

    ### C语言基础精要知识点概览 #### 1. C语言的发展历程与地位 C语言起源于1970年代初期,由美国电话电报公司(AT&T)贝尔实验室的Dennis Ritchie创造,旨在为UNIX操作系统开发一个高效且灵活的编程工具。1978年,...

    C语言基础知识大全

    《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...

    C语言基础 C语言基础 .zip

    学习C语言基础,不仅能够理解程序的基本结构和逻辑,还能为深入学习操作系统、编译原理等高级主题打下坚实基础。通过不断的实践和项目经验积累,你可以掌握C语言的精髓,成为一名出色的程序员。

    C语言基础学习(PPt格式)

    本资源集合为"C语言基础学习",包含PPT格式的学习资料,适合C语言初学者,也可作为教师的教学辅助材料。 在C语言基础学习中,主要涵盖以下几个关键知识点: 1. **基本数据类型**:C语言提供了多种基本数据类型,...

    c语言基础学习资料/包含课程PPT

    本学习资料集主要针对C语言的基础部分进行深入讲解,包括课程PPT,旨在帮助学习者扎实掌握C语言的基础知识。 1. **变量与数据类型**:C语言提供了多种数据类型,如整型(int)、字符型(char)、浮点型(float和...

    c语言基础知识总结.pdf

    C语言基础知识总结 C语言基础知识总结是计算机编程语言的基础知识,本文总结了C语言的基础知识点,涵盖程序结构、数据类型、运算符、控制结构、函数、数组、指针等领域。 一、程序结构 * 程序结构有三种:顺序...

    C语言基础小程序

    "C语言基础小程序"这个压缩包包含了你在学习C语言过程中可能会用到的一些基本代码示例,这些小程序对理解和实践C语言的基本概念非常有帮助。 1. **C语言概述**: C语言由贝尔实验室的Dennis Ritchie在1972年开发,...

Global site tag (gtag.js) - Google Analytics