在声明全局变量的时候前面加关键字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 958注意: 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 1348#include <stdio.h> #in ... -
20个C语言中常用宏定义总结
2015-03-02 10:41 44520个C语言中常用宏定义总结 2012-09-16 10:5 ... -
lseek
2015-01-05 09:41 3781. 每个打开的文件都有一个与其相关的“文件位置”。 ... -
sscanf
2014-12-30 18:24 497在我的学习过程 ... -
UC 文件系统
2014-12-30 13:16 582#include <stdio.h> #in ... -
open和fopen的区别:
2014-12-30 11:19 418open和fopen的区别: 1.缓冲文件系统 缓 ... -
c自己写的一些常用的函数
2014-12-26 15:56 0size_t mystrlen(const cha ... -
scandir函数运用
2014-12-05 10:18 595int 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 457一般的来说, ... -
C语言 free错误
2014-10-20 15:06 872#include <stdio.h> #in ... -
assert()函数用法总结
2014-10-16 09:53 520assert宏的原型定义在<assert ... -
ADT 之 列表 C
2014-09-26 17:08 0list.h #ifndef __LIST_H__ ... -
指针释放之结构体
2014-09-03 18:10 623typedef struct{ uint ...
相关推荐
C语言是在70年代初问世的。一九七八年由美国电话电报公司(AT&T)...但是,在《K&R》中并没有定义一个完整的标准C语言,后来由美国国家标准学会在此基础上制定了一个C 语言标准,于一九八三年发表。通常称之为ANSI C。
一些C语言基础学习PPT--献给和我一样的C语言迷茫者 一共有9个PPT,涉及多项C语言基础。
C语言基础课件对初学C语言者很有帮助,里面课件含有: 1.程序设计基础 2.数据类型 3.循环语句 4.数组 5.函数 6.指针 7.预处理命令 8.文件操作 9.结构体
C语言基础训练
C 语言基础教程 第一章 C语言概述 第二章 程序的灵魂-算法 第三章 数据类型、运算符与表达式 第四章 顺序程序设计 第五章 选择结构程序设计 第六章 循环控制 第七章 数组 第八章 函数 第九章 预处理命令 第十章 ...
第一章 C语言概论 第二章 C语言基础 第三章 C语言的基本控制结构 第四章 数 组 第五章 指 针 第六章 函 数 第七章 结构与联合 第九章 文 件
C语言基础(Day9)思维导图
C语言基础,共有九章内容,知识点清晰,内容丰富
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语言概论 第二章: 数据类型、运算符、表达式 第三章: C语言程序设计初步 第四章: 数组 第五章:函数 ...第九章:预处理 第十章:文件 附录一:Turbo C(V2.0)编译错误信息 附录二:Turbo C(V2.0)使用指南
A.9 语句 A.10 外部说明 A.11 作用域与连接 A.12 预处理 A.13 语法 附录B 标准库 B.1 输入与输出:<stdio.h> B.2 字符类测试:<ctype.h> B.3 字符串函数:<string.h> B.4 数学函数:<math.h> B.5 实用函数...
编程语言基础-C语言电子教案,共九章。
本文是txt文本里面有网盘永久链接视频,C语言基础,包括:002第二章 数据类型,运算符和表达式01,007第三章 顺序程序设计01,014第四章 分支结构程序05,016第五章 循环控制结构程序01,027第六章 数组05,032第七...
# C语言基础语法用例教程 本教程将为您介绍C语言的基础语法的使用案例知识。 ## 目录 1. [简介](#简介) 2. [变量和数据类型](#变量和数据类型) 3. [运算符](#运算符) 4. [控制流程](#控制流程) 5. [函数](#函数) ...
c语言基础教程第九章联合和枚举.pdf
C语言教程ppt C语言基础知识考试教程学习资料:CC1-预备知识 .PPTCC10-结构体.PPTCC2-VC++开发环境.pptCC3-C语言概述.PPTCC4-数据描述.PPTCC5(1)数据输入与输出.PPTCC5(2)程序流程设计.PPTCC6-数组.PPTCC7-函数....
博主学习C语言时敲下的代码,还不错,比较基础,包括剪刀石头布、找质数、快速找质数、21点游戏、九宫格等比较基础的代码集合。
2.C语言基础: 数据类型、变量、常量、运算符、表达式等基础知识。 3.流程控制: 详解if、switch、for、while等条件与循环语句。 4.函数: 学习函数定义、函数声明、函数的调用等内容。 5.数组、字符串和指针: 掌握数组...