C语言初学1--基础

C语言基础学习记录
学习视频如下
https://www.bilibili.com/video/BV1q54y1q79w/?spm_id_from=333.999.0.0&vd_source=7442270a1c7e13b4dcbd82e1f0420f8b
P1-P5:初识C语言

#define _CRT_SECURE_NO_WARNINGS 1

#include <stdio.h>
#include <string.h>

int main()
{

	return 0;
}

 结构体
char int double ..
 人、书... -- 复杂对象
人:名字+身高+年龄+身份证号+...
//
//struct Book
//{
//	char name[20];//C语言程序设计
//	short price; //55
//}; // ; 用于结束类型定义
//
//int main()
//{
//	//利用结构体类型创建一个结构体变量
//	struct Book b1 = {"C语言程序设计", 55};
//	struct Book* pb = &b1;
//
//	printf("书名:%s\n", b1.name);
//	printf("价格:%d元\n", b1.price);
//	b1.price = 15;
//	printf("甩卖价格:%d元\n", b1.price);
//
//	strcpy(b1.name, "C++"); //strcpy-string copy -字符串拷贝-库函数-string.h
//	printf("新书名:%s\n", b1.name);
//
//	//利用pb打印书名和价格
//	// . 结构体变量.成员
//	//-> 结构体指针->成员
//	//printf("书名:%s\n", (*pb).name);
//	//printf("价格:%d元\n", (*pb).price);
//	printf("书名:%s\n", pb->name);
//	printf("价格:%d元\n", pb->price);
//
//	return 0;
//}


//int main()
//{
//	char ch = 'w';
//	char* pc = &ch;
//	*pc = 'a';
//	printf("%c\n",ch);
//	printf("%d\n",sizeof(pc)); // 4 -- 当前平台为32位;
//	return 0;
//}
// 指正变量的大小
// 32位平台,指针的大小为4 byte;
// 64位平台,指正的大小为8 byte。


 指针
//int main()
//{
//	int a = 10; // 4个字节
//	int* p = &a; //int* 为指针变量类型,取出a的地址存到p
//	// 有一种变量是用来存放地址的--指正变量
//	printf("%p\n",&a);
//	printf("%p\n",p);
//
//	// *p; //  * -- 解引用操作符,间接访问操作符,对p进行解引用操作,找到它所指向的对象a 
//	*p = 20; //通过*p找到的a值改为20;
//	printf("%d\n",a);
//
//	return 0;
//}

 #define 定义常量和宏
//
 #define MAX 100 //#define 定义标识符常量
 #define 定义宏(带参数的)
//
// 函数的实现
int Max(int x, int y)
{
	int z = (x>y ? x:y);
	return z;
}
 宏的定义方式
//#define MAX(X, Y) (X>Y?X:Y)
//
//int main()
//{
//	// int a = MAX;
//	int a = 10;
//	int b = 20;
//	// 函数方式
//	//int max = Max(a, b);
//	//printf("max = %d\n", max);
//	// 宏的方式
//	int max = MAX(a, b);
//	printf("max = %d\n", max);
//
//	return 0;
//}

 static 修饰局部变量,局部变量的生命周期边长
 static 修饰全局变量,改变了变量的作用域,静态的全局变量只能在所在的原文件内部使用,出了原文件就无法使用
 static 修饰函数, 也是改变了函数的作用域(不准确的说法),即改变了函数的链接属性,外部链接属性变成了内部链接属性
//
 声明外部函数
//extern int Add(int, int);
//int main()
//{
//	int a = 10;
//	int b = 20;
//	int sum = Add(a, b);
//
//	printf("sum = %d\n", sum);
//
//    return 0;
//}

//int main()
//{
//	extern int g_val; // 声明外部符号
//	printf("g_val = %d\n", g_val);
//
//    return 0;
//}

//void test()
//{
//	static int a = 1; // 是一个静态的局部变量
//	a++;
//	printf("a = %d\n", a); // 2 3 4 5 6
//}
//
//int main()
//{
//	int i = 0;
//	while(i < 5)
//	{
//		test();
//        i++;
//	}	
//	return 0;
//}

//int main()
//{
//	// typedef -类型定义 - 类型重定义
//	typedef unsigned int u_int;
//	unsigned int num = 20;
//	u_int num2 = 20;
//
//	return 0;
//}

// 常见关键字
// auto break case char const continue default do double else enum(枚举) 
// extern(外部变量) float for goto if int long register(寄存器) return short signed(有符号的)
// sizeof static struct switch typedef(类型定义) union(联合体or共用体) unsigned(无符号的) void volatiele while

// & * . ->

//int main()
//{
//	int arr[10] = {0};
//	arr[4]; //[] - 下标引用操作符
//
//	int a = 10;
//	int b = 20;
//	int sum = Add(a, b); //() - 函数调用操作符
//
//	return 0;
//}

// 逗号表达式
// exp1, exp2, exp3, ..., expN

 条件操作符
//int mian()
//{
//	int a = 10;
//	int b = 20;
//	int max = 0;
//
//	// exp1 ? exp2 : exp3
//	// exp1 为真,执行exp2;
//	// exp1 为假,执行exp3;
//	max = (a>b ? a : b);
//
//	//if(a > b)
//	//	max = a;
//	//else
//	//	max = b;
//
//	return 0;
//}

 逻辑操作符
//int main()
//{
//	// 真 -- 非0
//	// 假 -- 0
//
//	// && -- 逻辑与
//	// || -- 逻辑或
//
//	int a = 3;
//	int b = 5;
//	int c = a && b;
//	int d = a || b;
//
//	printf("c = %d\n", c);
//	return 0;
//}

// 关系操作符
// > >= 大于等于
// < <=
// !=

(类型)--强制类型转换
//int main()
//{
//	int a = (int)3.14; //将double强制装换为init
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int b = a++; //后置++,先使用a赋给b,a再自增
//	int c = 10;
//	int d = ++c; //前置++,c先自增,再使用c赋给d
//	int e = 10;
//	int f = e--; //后置--,先使用a赋给b,a再自减
//	int g = 10;
//	int h = g--; //前置--,g先自减,再使用g赋给h
//	printf("a = %d b = %d c = %d d = %d\n", a, b, c, d); // 11 10 11 11
//	printf("e = %d f = %d g = %d h = %d\n", e, f, g, h); // 9 10 9 9 
//	return 0;
//}

// 只要是整数,内存中存储的都是二进制的补码
// 正数--原码、反码、补码是相同的
// 负数
//            原码 ------------------------> 反码  ------------------>  补码
// 直接按照正负写出的二进制序列   原码的符号位不变,其他位按位取反     反码加1  
// -2  10000000000000000000000000000010 - 原码
// -2  11111111111111111111111111111101 - 反码
// -2  11111111111111111111111111111110 - 补码
// -1 
// 1
//有符号数在内存中二进制的最高位表示符号
//[1][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 负数
//[0][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][][] 正数
//int main()
//{
//	// ~ 按二进制位取反
//	int a = 0; 
//	int b = ~a;
//	//00000000000000000000000000000000  32个0
//	//11111111111111111111111111111111
//  //+1
//  //100000000000000000000000000000000
//  //-1
//  //1*2^32-1
//	//源码、反码、补码
//	//复数在内存中存储的时候,存储的是二进制的补码
//	//11111111111111111111111
//	//11111111111111111111110
//	//10000000000000000000001
//	printf("%d\n", b ); //-1
//
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	int arr[10] = {1,2,3,4,5,6,7,8,9,10};  //int是元素的类型,数组的类型是int[10]
//	int num = 0;
//	//sizeof 计算变量或类型所占空间的大小,单位是字节
//	printf("%d\n",sizeof(a));
//	printf("%d\n",sizeof(int));
//	printf("%d\n",sizeof(arr)); //计算数组大小,单位是字节
//
//	//计算数组元素的个数
//	//个数=数组总大小/每个元素的大小
//	num = sizeof(arr)/sizeof(int);
//	printf("%d\n",num);
//
//	return 0;
//}

单目操作符
双目操作符
三目操作符
//
//int main()
//{
//	//c语言中表示真假 0-假;非0-真
//	int a = 10;
//	int b = -a;
//
//	printf("%d\n",a);
//	printf("%d\n",!a);
//	return 0;
//}

//int main()
//{
//	int a = 10;
//	a = 20;
//	//复合赋值符
//	a = a+10;
//	a += 10;
//
//	a = a-20;
//	a -=2 0;
//
//	return 0;
//}

//int main()
//{
//	//位操作符
//	//& 按位与
//	//| 按位或
//	//^ 按位异或:对应的二进制位相同为0,相异则为1
//
//	int a = 3; // 0 0 1 1
//	int b = 5; // 0 1 0 1
//	int c = a&b;
//	int d = a|b;
//	int e = a^b;
//
//	printf("%d\n" ,c); // 1
//    printf("%d\n" ,d); // 7
//	printf("%d\n" ,e); // 6
//
//	return 0;
//}

//int main()
//{
//	//int a = 5/2;
//	int a = 5%2;  //取模
//	printf("%d\n",a);
//	return 0;
//}

//int main()
//{
//	int arr[10] = {1,2,3,4,5,6,7,8,9,10}; //定义一个存放10个整型数字的数组
//	                                      //数组下标从0开始
//	//char ch[20];
//	//float arr2[5];
//	int i = 0;
//
//	printf("%d\n",arr[4]);
//
//	while(i<10)
//	{
//		printf("%d\n",arr[i]);
//		i++;
//	}
//
//	return 0;
//}

//int add(int x, int y)
//{
//	int z = x + y;
//	return z;
//}

//int main()
//{
//	int num1 = 10;
//	int num2 = 20;
//	int sum = 0;
//
//	int a = 100;
//	int b = 200;
//
//	sum = add(a, b);
//
//	//scanf("%d%d",&num1,&num2);
//	sum = num1 + num2;
//	printf("sum = %d\n",sum);
//
//	return 0;
//}

//int main()
//{
//	int line = 0;
//	printf("加入比特\n");
//
//	while(line<=200)
//	{
//        printf("敲一行代码:%d\n",line);
//	    line++;
//    
//	}
//
//	if(line>180)
//		printf("好offer");
//	   
//	return 0;
//}

//int main()
//{
//	//int input = 0;
//
//	//printf("加入比特\n");
//	//printf("你要好好学习吗?(1/0)>:");
//
//	//scanf("%d",&input);
//
//	//if(input==1)
//	//	printf("好offer\n");
//	//else
//	//	printf("卖红薯\n");
//
//	return 0;
//}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ou_no

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值