在声明全局变量的时候前面加关键字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};
使用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
发表评论
-
使用execvp 来调用程序传参
2015-07-08 14:52 992注意: execvp 函数会根据环境变量来查找程序 ... -
mail
2015-06-08 18:36 0<?php /** * 邮件发送 ... -
学生管理系统
2015-04-22 11:23 0#include <stdio.h> #in ... -
替换字符串中特征字符串为指定字符串
2015-04-02 18:36 0// 替换字符串中特征字符串为指定字符串 ... -
双向链表 数字按降序排列
2015-03-06 14:47 1389#include <stdio.h> #in ... -
20个C语言中常用宏定义总结
2015-03-02 10:41 47720个C语言中常用宏定义总结 2012-09-16 10:5 ... -
lseek
2015-01-05 09:41 4101. 每个打开的文件都有一个与其相关的“文件位置”。 ... -
sscanf
2014-12-30 18:24 539在我的学习过程 ... -
UC 文件系统
2014-12-30 13:16 631#include <stdio.h> #in ... -
open和fopen的区别:
2014-12-30 11:19 461open和fopen的区别: 1.缓冲文件系统 缓 ... -
c自己写的一些常用的函数
2014-12-26 15:56 0size_t mystrlen(const cha ... -
scandir函数运用
2014-12-05 10:18 647int GetClass(char *class_na ... -
Socket
2014-12-01 16:31 0一、Socket简介 Socket ... -
检查姓名的几种方法
2014-11-10 11:06 0int CheckXm(char *str){ ... -
任意语言访问PostgreSQL:C语言接口
2014-11-10 10:17 0任意语言访问PostgreSQL:C语言接口 来源: ... -
函数返回局部变量
2014-10-21 17:54 507一般的来说, ... -
C语言 free错误
2014-10-20 15:06 901#include <stdio.h> #in ... -
assert()函数用法总结
2014-10-16 09:53 587assert宏的原型定义在<assert ... -
ADT 之 列表 C
2014-09-26 17:08 0list.h #ifndef __LIST_H__ ... -
指针释放之结构体
2014-09-03 18:10 663typedef struct{ uint ...
相关推荐
本教程“C语言基础教程(全)”旨在为初学者提供全面且深入的C语言学习指导。 教程内容可能包括以下几个方面: 1. **C语言概述**:介绍C语言的历史、特点和应用领域,让学习者对C语言有一个初步的认识。 2. **基本...
《C语言基础教程》是吕凤翥先生撰写的一本经典C语言教材,尤其适合初学者入门。这本书以其清晰的语言和实例解析,深受广大编程爱好者的喜爱。在学习C语言的过程中,掌握其基础知识至关重要,因为C语言是许多现代编程...
C语言基础教程是一门针对初学者的编程课程,旨在教授如何使用C语言进行程序设计。C语言是一种广泛应用的计算机编程语言,因其高效、灵活和强大的功能而被广泛应用于系统编程、软件开发、嵌入式系统等多个领域。本...
【标题】"C语言基础学习包"所涵盖的知识点主要围绕C语言的基础概念、语法结构、数据类型、控制结构、函数、数组、指针等方面展开。C语言是一种强大的、低级的编程语言,广泛用于系统编程、嵌入式开发、软件工程等多...
"C语言基础教材"是一份专为初学者设计的学习资源,旨在帮助零基础的学习者逐步掌握C语言的核心概念和技术。 这份教材以HTML格式提供,方便在网页浏览器中阅读和学习,同时也便于检索和打印。HTML文档通常包含丰富的...
**C语言基础** C语言是一种强大的、通用的编程语言,起源于1972年,由丹尼斯·里奇在贝尔实验室开发。它是许多现代编程语言的基石,因其高效、灵活和可移植性而广受程序员喜爱。"C语言基础.ppt"这份教程将引导初学...
本资源“C语言基础练习面试题”是针对初学者和有一定经验的开发者设计的一系列练习,旨在帮助他们巩固C语言基础知识,提升编程技能,并为面试做好准备。 在C语言的基础部分,这些练习涵盖了以下几个关键知识点: 1...
C语言是一种广泛应用于系统编程、应用编程、嵌入式开发等多个领域的高级编程语言,它的语法简洁明了,是学习其他编程语言的良好基础。本课件集合涵盖了C语言的基础知识,适合初学者入门学习,同时也对准备二级考试的...
C语言的基础知识涵盖了语法、数据类型、控制结构、函数、指针等多个方面。 1. **语法基础**:C语言的语法结构清晰,主要包括声明、定义、表达式和语句。例如,声明变量(如`int a;`)、定义变量(如`int a = 10;`)...
根据给定的C语言基础练习题及其描述,我们可以总结出一系列重要的C语言知识点,这些知识点不仅对于在校大学生,而且对于所有初学者都是极其宝贵的。下面将详细解释这些知识点: ### 1. C语言标识符规则 C语言中的...
本资源“C语言基础程序代码合集”旨在为初学者提供一系列基础的C语言程序示例,帮助他们理解和掌握C语言的核心概念。 在C语言中,基础知识点主要包括以下几个方面: 1. **基本数据类型**:C语言有几种基本的数据...
这个“C语言基础知识PPT文件”显然是一份面向初学者的学习资料,旨在帮助用户掌握C语言的基本概念和语法。 首先,C语言的基础部分通常包括以下几个方面: 1. **数据类型**:C语言提供了多种基本数据类型,如整型...
### C语言基础精要知识点概览 #### 1. C语言的发展历程与地位 C语言起源于1970年代初期,由美国电话电报公司(AT&T)贝尔实验室的Dennis Ritchie创造,旨在为UNIX操作系统开发一个高效且灵活的编程工具。1978年,...
《C语言基础知识大全》这份文档深入浅出地介绍了C语言的核心概念与编程技巧,是学习C语言不可或缺的宝典。以下是从标题、描述、标签以及部分内容中提炼的关键知识点,旨在帮助初学者快速掌握C语言的基本原理与应用。...
学习C语言基础,不仅能够理解程序的基本结构和逻辑,还能为深入学习操作系统、编译原理等高级主题打下坚实基础。通过不断的实践和项目经验积累,你可以掌握C语言的精髓,成为一名出色的程序员。
本资源集合为"C语言基础学习",包含PPT格式的学习资料,适合C语言初学者,也可作为教师的教学辅助材料。 在C语言基础学习中,主要涵盖以下几个关键知识点: 1. **基本数据类型**:C语言提供了多种基本数据类型,...
本学习资料集主要针对C语言的基础部分进行深入讲解,包括课程PPT,旨在帮助学习者扎实掌握C语言的基础知识。 1. **变量与数据类型**:C语言提供了多种数据类型,如整型(int)、字符型(char)、浮点型(float和...
C语言基础知识总结 C语言基础知识总结是计算机编程语言的基础知识,本文总结了C语言的基础知识点,涵盖程序结构、数据类型、运算符、控制结构、函数、数组、指针等领域。 一、程序结构 * 程序结构有三种:顺序...
"C语言基础小程序"这个压缩包包含了你在学习C语言过程中可能会用到的一些基本代码示例,这些小程序对理解和实践C语言的基本概念非常有帮助。 1. **C语言概述**: C语言由贝尔实验室的Dennis Ritchie在1972年开发,...