C语言基础(二)构造类型、语句

您所在的位置:网站首页 c基本语句类型 C语言基础(二)构造类型、语句

C语言基础(二)构造类型、语句

2022-12-16 05:40| 来源: 网络整理| 查看: 265

一、构造类型

1.结构体:是由多个成员组成的数据集合,成员可以是不同的数据类型。例如:空间坐标、复数、学生信息等。

//创建一个结构体类型:空间坐标Point,包含x、y、z三个坐标信息 struct Point{ double x; double y; double z; }; // 声明一个结构体(Point)类型的变量p1 struct Point p1; //为这个空间坐标p1赋值 p1.x=3.5; p1.y=4.5; p1.z=5.0; //输出 printf("空间坐标:p1(%2.1f,%2.1f,%2.1f)\n",p1.x,p1.y,p1.z);

结果:

空间坐标:p1(3.5,4.5,5.0)

 2.共用体:同一个内存空间中存储不同的数据类型,所有成员共享空间。

//共用体 union Data{ char a; //占用1个字节空间 short b; //占用2个字节空间 double c;//占用8个字节空间 }; union Data d1; d1.a='a'; d1.b=12345; d1.c=55555.5666; printf("d1.a=%c\nd1.b=%d\nd1.c=%lf\n",d1.a,d1.b,d1.c);

结果

d1.a= d1.b=21181 d1.c=55555.566600

 共用体Data中虽然有char short double三种类型的成员,但是在开辟空间时只开辟8个字节(占空间最大的成员),给任意一个成员赋值时都会写入这个空间中,后写入的数据会覆盖之前的数据,上面例子中给d1.b赋值后,d1.a的数据被覆盖,给d1.c赋值后d1.b的数据又被覆盖了,所以最后只有d1.c显示正确数据。

3.枚举:声明符号名称来表示整型常量。枚举类型的目的是提高程序的可读性。

enum Gender{ Male, //Male=2, Female }; enum Gender gg; gg=Male; printf("gg=%d\n",gg); gg=Female; printf("gg=%d\n",gg); gg=3;//不报错,但是不建议这样用 printf("gg=%d\n",gg);

结果

gg=0 gg=1 gg=3

 默认情况下,枚举列表中的常量被赋予0,1,2等。所以Male=0,Female=1,不想使用默认值可以通过给Male=2这样的方式指定初始值,此时Female=3。

typedef:定义别名。

//定义别名:定义Pt用来表示struct Point typedef struct Point Pt; //此时Pt的使用和基础类型一样 Pt p2; //也可以在定义结构体的时候直接指定别名 typedef struct Point2D{ double x; double y; } Pt2D; Pt2D p3;

4.数组

一维数组

//创建 int array[5]; //赋值 array[0]=1; array[1]=3; array[2]=5; array[3]=7; array[4]=9; //创建+初始化 int array1[]={2,4,6,8}; //数组长度:函数sizeof()计算占用内存字节数 int len = sizeof(array1)/sizeof(int); printf("数组长度为%d\n",len); //输出 printf("array[%d]=%d\n",0,array[0]); printf("array[%d]=%d\n",1,array[1]); printf("array[%d]=%d\n",2,array[2]); printf("array[%d]=%d\n",3,array[3]); printf("array[%d]=%d\n",4,array[4]);

结果

数组长度为4 array[0]=1 array[1]=3 array[2]=5 array[3]=7 array[4]=9

 二维数组

//二维数组 int arr[2][3]={{1,2,3},{4,5,6}}; //修改元素数据 arr[1][0]=100; //输出 printf("arr[%d][%d]=%d\t",0,0,arr[0][0]); printf("arr[%d][%d]=%d\t",0,1,arr[0][1]); printf("arr[%d][%d]=%d\n",0,2,arr[0][2]); printf("arr[%d][%d]=%d\t",1,0,arr[1][0]); printf("arr[%d][%d]=%d\t",1,1,arr[1][1]); printf("arr[%d][%d]=%d\n",1,2,arr[1][2]);

结果

arr[0][0]=1 arr[0][1]=2 arr[0][2]=3 arr[1][0]=100 arr[1][1]=5 arr[1][2]=6

 5.指针

 指针就是内存地址。

//1.内存地址 int num = 10; printf("num=%d\n",num); printf("num=%p\n",&num);//num的内存地址 //2.定义指针 int * ptr_num=#//指针指向num的内存地址 printf("ptr_num=%p\n",ptr_num);//指针存储的是num的地址 //指针前加*代表内存地址中的数据 *ptr_num=20;//这个操作等价于num=20; printf("指针指向的数据num=%d\n",*ptr_num); printf("num=%d\n",num);

结果(32位操作系统或32位编译器):

num=10 num=0061FEC8 ptr_num=0061FEC8 指针指向的数据num=20 num=20

 结果(64位操作系统或64位编译器):

num=10 num=000000EC71D0F780 ptr_num=000000EC71D0F780 指针指向的数据num=20 num=20

注:64位操作系统可以同时处理64个二进制位(即8个字节),所以内存地址长度是8个字节。 

1.内存地址。内存中任何变量都有对应的地址,可以使用&获取内存地址

2.定义指针。定义指针使用符号“*”,访问内存地址中保存的数据也用“*”,要注意区分两个*。

二、语句

语句有三种结构:顺序、选择、循环

1.顺序结构:前面main函数中的语句,由上至下一条一条的执行。

2.选择结构:根据不同的条件,选择执行不同的语句 。选择结构包括if语句和Switch语句。

简单if语句:

int num; printf("请输入一个数:"); scanf("%d",&num); if(num90) printf("优秀"); else if (num>75) printf("良好"); else if (num>60) printf("合格"); else printf("不合格");

结果:

请输入成绩: 80 良好

if语句的嵌套:

//比较两个数的大小 int m,n; printf("请输入第一个数:\n"); scanf("%d",&m); printf("请输入第二个数:\n"); scanf("%d",&n); if(m==n) printf("相等"); else{ if(m>n) printf("m大于n"); else printf("m小于n"); }

 结果:

请输入第一个数: 15 请输入第二个数: 20 m小于n

switch语句:

printf("今天星期几(输入数字回答)?\n"); int day; scanf("%d",&day); switch (day) { case 1: printf("星期一"); break; case 2: printf("星期二"); break; case 3: printf("星期三"); break; case 4: printf("星期四"); break; case 5: printf("星期五"); break; case 6: case 7: printf("周末"); break; default: printf("输入错误!"); }

 结果:

今天星期几(输入数字回答)? 3 星期三

3.循环结构:程序中循环执行一段代码,需要设置循环终止条件。循环结构包括:for语句、while语句、do-while语句。

//例:输出1~10 printf("使用顺序语句输出:\n"); printf("%d ",1); printf("%d ",2); printf("%d ",3); printf("%d ",4); printf("%d ",5); printf("%d ",6); printf("%d ",7); printf("%d ",8); printf("%d ",9); printf("%d ",10); //while printf("\nwhile循环:\n"); int i=1;//1 while(i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3