C语言初识

通过B站视频自学C语言——知识点——仅作为自己的笔记,便于回顾。

一、hello world。

//导入一个文件,stdio.h中的std是一个标准库,i为input,o为output,标准输入输出库,.h为头文件
//<>表示导入系统文件_""表示自定义文件。
#include <stdio.h>//包含_std——标准库_io——输入输出_.h——头文件。
//int 数据类型 整型 如果出现函数中表示函数的返回值
//mian 程序的主函数 程序有且只有一个函数
//()括号内表示函数的参数,函数的参数可以有多个,中间采用逗号隔开。
int main()
{   //{}函数体 代码体 程序体
    //printf 是stdio.h系统提供的函数,表示在标准输出设备上打印字符串
    //""称为字符串;一条语句的结束。
    printf("hello world!");
    return 0;
    //return 如果出现在其他函数中表示函数结束,如果出现在main函数中表示程序结束
    //0表示函数的返回值,要和函数返回值类型对应
} 
一、
//包含一个stdio.h的文件;
//std-标准,standard input output
#include<stdio.h>
int main()//主函数-程序的入口-mian函数有且只有一个
{
	printf("你好呀!\n");//库函数——C语言本身提供给我们使用的函数。
	return 0;//返回0;
}
//int 为整型
//main前面的int表示mian函数调用返回一个整数值。

二、
//数据类型
char	//字符型数据类型
short	//短整型
int	//整型
long	//长整型
long long  //更长的整型
float	//单精度浮点数
double	//双精度浮点数

//2、字符格式
#include<stdio.h>
int main()
{
	char ch ="A";        //内存
	printf("%c\n", ch);  //%c——打印字符格式的数据
	return 0;//返回0;
}

//2、整型
	int age =10;
	printf("%d\n", age);

//3、短整型
	 short int

//char——字符类型
//%d——打印整型
//%c——打印字符
//%f——打印浮点数字——打小数
//%p——以地址的形式打印
//%x——打印16进制数字
//%o——

//4、打印
	float f=5.0;
	printf("%f\n", f);

double d=3.14;  //双精度
printf("%lf\n", d);


三、
数据类型
1、程序
//char	//字符型数据类型
//short	//短整型
//int	//整型
//long	//长整型
//long long  //更长的整型
//float	//单精度浮点数
//double	//双精度浮点数
#include<stdio.h>
int main()
{
	printf("%d\n", sizeof(char));		//1个字节
	printf("%d\n", sizeof(short));		//2
	printf("%d\n", sizeof(int));		//4
	printf("%d\n", sizeof(long));		//4
	printf("%d\n", sizeof(long long));	//8
	printf("%d\n", sizeof(float));		//4
	printf("%d\n", sizeof(double));		//8
	return 0;//返回0;
}


2、解释:
计算机中的单位
bit	比特位(0或者1,占一个位置)(正点或者负电)
byte	字节(1一个字节=8个比特位的大小)
kb	=1024 byte
mb	=1024 kb
gb
tb
pb

进制转换
123十进制数
1*10^2+2*10^1+3*10^0=100+20+3=123
010二进制数
0*2^2+1*2^1+0*2^0=0+2+0=2

short age=20;	//2^16-1=65535 比特位bit

四、
1、sizeof(long)>=sizeof(int)
2、{}内的变量为局部变量;反之,为全局变量。
3、当全局变量与局部变量名称相同时,局部变量优先。
4、计算两个数的和	
	int num1=0;
	int num2=0;
	scanf("%d%d",&num1,&num2);//输入
	int sum = num1 + num2;
	printf("sum = %d\n",sum);	//打印
5、变量的作用域和生命周期
	声明extern外部变量

二、循环+函数。

1、VS中的scanf命令正常使用操作。
	VS安装路径——VC——new++file.cpp——记事本打开——粘贴#define _CRT_SECURE_NO_WARNINGS 1
	如果失败——下载Notepad++——安装,
	粘贴#define _CRT_SECURE_NO_WARNINGS 1——保存——关闭。
2、常量
 	1)字面常量(数字)
	2)const 修饰的常变量
	const  -  常属性
	const int n=10;
	3)#define 定义的标识符常量
	#define MAX 10
	4)枚举常量
	性别;颜色种类;星期;
枚举关键字——enum
enum Sex
{
	man,
	feman,
	secret,
}
主函数中调用:
	enum Sex sex = man;
3、字符串+转义字符+注释
	“”内的为字符串。如:“hello world”。
	#include <stdio.h>
	int main()
	{
	char arr1[] = "abc"; 

	}

	strlen —— sting length 字符串的长度。
	\0 —— 为转义字符,转换意思的字符。。
	\t —— 水平制表位。
4、选择、循环。
	for;  while;  do……while;
程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>//字符串
int main()
{
	int line = 0;
	printf("你好!\n");
	while (line < 200)
	{
		printf("敲代码:%d\n",line);
		line++;
	}
	if(line > 200)
	printf("恭喜你!");
	//scanf("%d%d", &num1, &num2);//输入
	//printf("sum = %d\n", sum);	//打印
	return 0;//返回0;
}
结束。

5、函数。
子函数:
int Add(int x, int y)
	{
	int z = x + y;
	return z;
	}
6、数组。
	数组的定义:一组相同类型元素的集合。
	如:int arr[10] = {1,2,3,4,5,6,7,8,9,10};//最多放10个元素。
	//printf(" %d\n", arr[2]);	//打印
循环:
int i = 0;
while(i < 10)
{
	printf("%d", arr[i]);
	i++;
}
7、算数操作符
	/——取商;
	%——取余;
	移位操作符(二进制)。
	<< 左移
	>> 右移
位操作符 —— & ^ |
异或的计算规律:a^b
	相同为0;相反为1。
a=a+10; 等价于 a+=10;

单目操作符;
双目操作符;
三目操作符;

三、空间大小

1、
int 4个字节,32bit位。
~	按位取反(2进制)
//原码、反码、补码。
//负数在内存中存储的时候,存储的是二进制的补码。
//0000000000000000000
//1111111111111111111
最高位为0的为正数,最高位为1的为负数。最高位为符号位。
内存为补码,打印的(使用的)是这个数的原码。
//原码——反码
	符号位不变,其他位取反。
//反码——补码
	反码减一得到补码。
//1000000000000000000000
等价于: 1*2^32-1。
	[0][][][][][][][]——正数。
	[1][][][][][][][]——负数。
//原码、  ->    反码、   ->   补码。——三者之间的关系。
只要是正数,内存中存储的都市二进制补码。
正数——原码,反码,补码——相同
负数——补码。
	原码——直接按照正负写出的二进制序列;
	反码——原码的符号位不变,其他位按位取反得到;
	补码——反码+1。
举例:(-2)
10000000000000000000010——原码。
11111111111111111111101——反码。
11111111111111111111110——补码。

2、
//--;++;减减加加。
程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
//#include <string.h>//字符串
int main()
{
	int a = 10;
	int b = a ++;//后置++,先使用,再++。	
	//int b = ++ a;//前置++,先++,再使用。
	printf("a=%d,b=%d\n",a,b);
	int x = 10;
	//int y = x--;//后置--,先使用,再--。	
	int y = --x;//前置--,先--,再使用。
	printf("x=%d,y=%d\n",x, y);
	return 0;//返回0;
}
//scanf("%d%d", &num1, &num2);//输入
//printf("sum = %d\n", sum);	//打印
结束。

3、
*——简介访问操作符(解引用操作符)
(类型)——强制类型转换。
	int =(int) 3.14;

4、条件操作符(三目操作符)。
	exp1 ? exp2 : exp3
	例如:a > b ? a : b
	解释:如果a>b为真,则输出a,反之,输出b。
5、下标引用操作符——[];函数调用——();结构体中.—— ->

6、常见关键字:
	auto  break case char const continue default do duble else enum extern float for goto if int long
	register(寄存器) return short signed(有符号) sizeof static(静态) struct
	switch typedef(类型定义) union(共用体) unsigned(无符号) void volatile while
计算机 存储数据

寄存器
高速缓存
内存
硬盘
typedef ——类型定义——类型重定义
typedef unsigned int XXX

static 修饰局部变量 
//局部变量的生命周期变长了。
static 修饰全局变量 
//改变了变量的作用域——让静态的全局变量只能在自己所在的源文件内部使用,出了源文件就没法再使用了。
static 修饰函数
//也是改变了函数的作用域——不准确
//static 修饰函数改变了函数的链接属性。
 //外部链接属性——内部链接属性。

extern——外部声明符号。

7、
	#define  定义标识符常量——#define MAX 100
	#define  可以定义宏-带参数
函数(程序):
int Max(int x,  int y)
{
	if(x>y)
		return x;
	else
		return y;
}		

//宏的定义方式
#define Max(x,y) (x>y?x:y)

8、指针(重要)

三(1)、指针(重要)。

1、指针(非常重要)
	地址->空间(房间)
如何产生地址
32位
32根地址线/数据线
正电1和负电0;
共有2^32个
000000000000000
000000000000001
000000000000010
000000000000011
............
011111111111111
100000000000000
............
111111111111111

int a= 10;//申请4个字节

三段代码:
int   a = 10;   等价于  a=(10) _地址:ox0012ff40
int * p = &a; 等价于  p=(ox0012ff40)
* p = 20;

程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
	int a = 10;//申请4个字节byte
	//&a;//取地址。
	int * p = &a;//有一种变量是用来存放地址的——指针变量
	//p的类型//int * p
	//printf("%p\n",&a);
	//*p //*——解引用操作符。
	*p = 20;
	printf("a = %d\n", a); 
	printf("%p\n",p);
	return 0;//返回0;
}
结束。

例子:
程序:
#include<stdio.h>
int main()
{
	char ch ="w";
	char *p =&ch;
	*p ="q";
	printf("%c\n", ch);
	return 0;
}
结束。

2、指针的大小。
结论:指针的大小再30位平台上是4个字节,64位平台是8个字节。

四、结构体。

1、结构体——表示一个或者一个本书——复杂对象。
名字+身高+年龄+身份证号码。
书名+作者+出版社+定价+书号。
程序:
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>//字符串头文件
//创建一个结构体类型
struct Book
{
	char name[20];//C语言程序设计
	char price;//55
};
int main()
{
	//利用结构体类型,创建一个该类型的结构体变量。
	struct Book b1 = { "C语言程序设计",55 };
	struct Book* pb = &b1;
	//更改书名
	strcpy(b1.name,"C++");//strcpy——string copy——字符串拷贝——库函数——string.h
	printf("更改书名:%s  \n\n",b1.name);
	//利用指针pb打印我的书名和价格
	printf("另一种指针打印书名:%s  \n", pb->name);
	printf("另一种指针打印价格:%d元\n\n", pb->price);
	//.		结构体变量.成员
	//->	结构体指针->成员
	printf("使用指针打印书名:%s  \n",(*pb).name);
	printf("使用指针打印价格:%d元\n\n",(*pb).price);


	printf("书名:%s\n", b1.name);
	printf("价格:%d元\n\n", b1.price);
	b1.price = 15;
	printf("修改后的价格:%d元\n", b1.price);
	return 0;//返回0;
}

//scanf("%d%d", &num1, &num2);  //输入
//printf("sum = %d\n", sum);	//打印

结束。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值