其他分享
首页 > 其他分享> > 2021-07-27

2021-07-27

作者:互联网

C语言学习

DAY 8

编译器:VS2019;

学习资料
1、B站视频(P42~P47)见链接 【求知讲堂2021C语言/C++视频99天完整版(不断更新中)学完可就业-哔哩哔哩】https://b23.tv/4DzQDY;

位域

#include<stdio.h>
#include<string.h>
#pragma warning (disable : 4996)

struct Bit
{
	unsigned int isTrue : 1;
	unsigned int isFalse : 1;//限定内存位数, 只用2位来存储值。
};
struct Age
{
	unsigned int age : 3;//2  10  4  100  8  1000
};

int main(void)
{
	//struct Bit bit;
	//struct Age age1;
	//age1.age = 4;
	//printf("%d\n", sizeof(bit));
	//printf("%d\n", sizeof(age1));
	//
	//age1.age = 8;
	//printf("%d\n", age1.age);//输出为0因为越界,只能存储到3位

	//age1.age = 7;
	//printf("%d\n", age1.age);  //7 二进制位111

	return 0;

}

typedef

typedef定义的一般类型

#include<stdio.h>
#include<string.h>
#pragma warning (disable : 4996)

typedef unsigned char BYTE;
typedef int INT;

typedef struct Books
{
	char title[100];
	char bookname[50];
	char author[50];
	int bookID;
}Book;

int main(void)
{
	Book book1;

	strcpy(book1.title, "c语言");
	strcpy(book1.author, "张三");
	strcpy(book1.bookname, " c语言从入门到精通");
	book1.bookID = 10010;

	printf("%s\n", book1.bookname);

	return 0;

}

枚举

枚举用来表示某些无法用数字或字母表示的基本数据变量,例如一天的时间:时分秒,一年四季,每天的课程等。枚举是一种基本数据类型,不能再分解为任何基本类型。

枚举类型定义的一般形式

#include<stdio.h>

enum Week
{
	Mon,//可初始化Mon=1,未初始化默认为0;
	Tue,
	Wed,
	Thu,
	Fri,
	Sat,
	Sun,
};
enum Year
{
	Spring,
	summer,
	Autumn,
	Winter
};

int main(void)
{
	printf("%d\n",Sun);

	enum Day day;
	day = Fri;

	printf("%d\n", day);
	return 0;
}

动态分配内存

常用的动态储存分配函数有三个:malloc,calloc、free。
malloc函数调用形式
( 类型说明符* ) malloc (size)
作用:在内存的动态存储区中分配一块长度为size字节的连续区域。函数的返回值为该区域的首地址。

calloc函数调用形式
(类型说明符*)calloc(n , size)
作用:在内存的动态存储区中分配n块长度为size字节的连续区域。函数的返回值为该区域的首地址。

free函数的调用形式
free( void* Pionter)
作用:释放指向Pionter的一块内存空间。

#include<stdio.h>
#include<string.h>
#include<crtdbg.h>
#include<corecrt_malloc.h>
#pragma warning (disable : 4996)

int main(void)
{
	char charArray[100];
	char* charP;

	strcpy(charArray, "chararray");
	charP = (char*)malloc(500 * sizeof(char));

	if (charP == NULL)
	{
		printf("没有分配到内存\n");
	}
	else
	{
		strcpy(charP,"成功分配了动态内存");
	}

	printf("charArray = %s\n", charArray);
	printf("charP = %s\n", charP);


	charP = (char*)realloc(charP, 200 * sizeof(char));

	if (charP == NULL)
	{
		printf("分配内存失败\n");
	}
	else
	{
		strcpy(charP, "内存分配成功。");//strcat  strcpy
	}

	printf("charArray = %s\n", charArray);
	printf("charP = %s\n", charP);
	//Pionter
	free(charP);

	return 0;
}

位运算

&I^~<<>>
按位与按位或按位异或取反左移右移
#include<stdio.h>

int main(void)
{

	int x = 3;//0011
	int	y = 5;//0101
	printf("%d\n", x & y);
	//0011
	//0101
	//0001=1
	int n = 060;//   八进制
	int m = 017;//
	//0011 0000
	//0000 1111
	//0011 1111=63

	printf("%d\n", n | m);

	int i = 1;//0001
	int j = 2;//0010

	i = i ^ j;//i=0011
	j = j ^ i;//j=0001
	i = i ^ j;//i=0010

	ChangeNum(i, j);
	printf("i = %d, j = %d\n", i, j);


	return 0;

}

标签:typedef,27,07,int,charP,char,2021,printf,include
来源: https://blog.csdn.net/L__sh/article/details/119144404