《C语言学习笔记》 --- 初识C语言

目录

1.什么是C语言?

2.怎么写C语言代码?

 3.从第一个C语言程序开始:

4.初识数据类型:

5.初识变量/常量类型

6.scanf函数报错问题

7.初识字符串

8.转义字符与注释

9.初识选择语句

10.初识循环语句

11.初识函数

12.初识数组

 13.初始操作符

14.常见关键字   

15.#define定义常量和宏

​​

16.初识指针

17.初识结构体


1.什么是C语言?

计算机语言:人和计算机交流的语言    C/C++/JAVA/python/GO

C语言是一门通用的计算机编程语言  广泛用于底层软件开发

                      

C语言标准:美国国家标准局  制定ANSI C----C89,C90,C99,C11(最新标准)

计算机语言:识别二进制语言  使用困难1010001011

  ---->  汇编语言  助记符  ADD  000000111  ---->  B语言   ---->  C语言

2.怎么写C语言代码?

工具:编译器  Devc  Vc  VS2019 ...

以VS2013为例

   ①创建项目  ②创建源文件  ③写代码  ④编译 运行

 3.从第一个C语言程序开始:

 

//一个工程中可有多个.c文件 但只可有且仅有一个main函数  

4.初识数据类型:

小数---浮点数   整数---整形

 //上述输出为字节 C语言标准:sizeof(int) >= sizeof(long) 

计算机中的单位:

bit --比特位  一个比特位存放一个二进制数

byte --字节 =8 bit

-->  kb --> mb  -->  gb  -->  tb  -->  pb  1024为一阶

5.初识变量/常量类型

变量 -- 可以改变的量 

 作用域与生命周期:

        局部变量的作用域:就是变量所在的局部范围

        全局变量的作用域:整个工程  extern int//声明一下

        生命周期:变量的创建和销毁之间的时间段

 常量 -- 不能改变的量 

     ①字面常量   3.14  ②const修饰的常变量  ③#define 定义的标识符常量  ④枚举常量

#define MAX = 1;//define定义的标识符常量
enum Sex//枚举常量  第一个默认从0开始  也可赋初值来改变默认
	{
		MALE,
		FEMALE,
		SECRET
	};
int main()
{
	const int num = 1;//常变量---本质属性是变量
	printf("%d\n", num);

	printf("%d\n", MALE);
	printf("%d\n", FEMALE);
	printf("%d\n", SECRET);
	return 0;
}


6.scanf函数报错问题

scanf_s函数 --VS编译提供的  不是C语言标准规定的

解决办法:

#define _CRT_SECURE_NO_WARNINGS 1

 加入到第一行中

7.初识字符串

由双引号引起来的一串字符称为字符串字面值

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
	char arr1[] ="abc";          
	char arr2[] = { 'a','b','c'};
	// 字符数组--一组相同类型的元素
	//"abc"--'a’ 'b' 'c' '\0'
	//字符串的结束标志是\0  
	//数据在计算机上存储的时候 以2进制的方式  
	// ASCII编码 a--97  A--65 ASCII码值 
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%d\n", strlen(arr1));//strlen -string length--3
	printf("%d\n", strlen(arr2));// 计算字符串长度的函数--15
	//strlen库函数---#include <string.h>
	return 0;
}

8.转义字符与注释

转义字符释义 
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量'
\“用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b         退格符
\f进纸符
\n换行        
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: \130 X
\xdddd表示2个十六进制数字。 如: \x30 0
int main()
{
	printf("c:\test\32\test.c\n");// 水平制表符	Tab1\t
	printf("c:\\test\\32\\test.c");
	printf("(are you ok??)");//??) --- ] --三字母词
	printf("%c\n", '\'');

	printf("%d\n", strlen("c:\test\32\test.c"));//13
	//  \t 转义字符算一个字符 
	// \32-- 32是2个8进制数字,作为ASCII码值对应的字符
	// 32 --> 10进制  26--> 作为ASCII码值对应的字符
	printf("%c\n", '\32');
	printf("%c\n", '\132');
	//  \xdd 表示16进制数字作为ASCII码值对应的字符
	//  \x61 -->  10进制数字  97 --> a
	printf("%c\n", '\x61');
	return 0;
}

注释方式:①C++注释风格:  //   ②C语言注释风格:  /*   */ 

9.初识选择语句

int main()
{
	printf("你要表白吗?(1/0)\n");
	printf("1--要  0--不要\n");
	int input = 0;
	scanf("%d", &input);
	if (input == 1)
		printf("表白可能会赚\n");
	else
		printf("不表白一定不会亏\n");
	return 0;
}

10.初识循环语句

int main()
{
	printf("你要做我女儿吗?(1/0)\n");
	printf("1--要  0--不要\n");
	int input = 0;
	scanf("%d", &input);
	if (input == 1)
		printf("好的,乖女儿!\n");
	else
		int g = 0;
		while (g <= 2000)
		{
			printf("1--要  0--不要\n");
			int i = 2;
			scanf("%d", &i);
			{
			if (i == 1)
				printf("好的,乖女儿!\n"), g = 2021;
			else
				g++;
			}
		}
		
	return 0;
}

11.初识函数

//加法函数:
int Add(int x, int y)//函数参数
{
	int z = x + y;
	return z;
}//函数体
int main()
{
	int a = 1;
	int b = 0;
	int sum=1;
	printf("请输入你想求和的数字\n");
	scanf("%d\n", &a);
	scanf("%d\n", &b);
	sum = Add(a, b);
	printf("sum=%d", sum);
	return 0;
}

12.初识数组

int main()
{
	int arr[10] = { 1,2,3,4,5,6,7,8,9,0 }; 
	//arr[下标]访问第几个元素  从0开始
	char ch[5] = { 'a','b','c' };//不完全初始化,剩余的默认为0
	//打印数组全部内容:
	int i = 0;
	while (i < 10)
	{
		printf("%d\n", arr[i]);
		i++;
	}
	return 0;
}

 13.初识操作符

除法 --- /:得到商数不会出现小数

取模 --- %:得到余数

移位操作符 : << --左移  >> -- 右移  如:a<<2

位操作符:

& 按位与全真即真为1
| 按位或  有1则1
^按位异或相同为0  不同为1

复合赋值符号:

如:a = a + 10 ---  a += 10

 单目操作符:

 

按位取反:

//强制类型转化:
int a = (int) 3.14 ;

关系操作符:

 

三目操作符:

逗号表达式:从左到右依次计算  整个表达式的结果是最后一个表达式的结果

//下标引用操作符: []  函数调用操作符---函数名后边使用 () 

14.常见关键字   

变量不可为关键字名!

auto :  在局部变量中  //自动创建与销毁  auto int a

register : 寄存关键字

union : 共用体(联合体)   void : 无--空

// define  include  预处理指令

 typedef 类型重定义:                   

 

  static 静态的:①修饰局部:改变了局部变量的生命周期(本质是改变变量的存储类型)

②修饰全局变量 :使得这个全局变量只能在自己所在的源文件内部使用(全局变量具有外部链接属性 但被static修饰之后 就变成了内部链接属性)③修饰函数:使得函数只能在自己所在的源文件内部使用

15.#define定义常量和宏

1.define定义常量:

#define MAX 1000 

16.初识指针

计算机类型:  32位 -- 32根地址线(用来编号)  -- 物理线  --通电 1/0

以一个字节为一个内存单元进行编号

#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
int main()
{
    int num = 10;
    printf("%p\n", &num);//%p专门用来打印地址
    int * pnum = &num;
    //pa是用来存放地址的,在C语言中pa叫指针变量
    //*说明pa是指针变量 
    //int 说明pa执行的对象是int类型 
    *pnum = 20;//解引用操作 *pa就是通过pa里面的地址找到a  将20赋值给a 
    return 0;
}

指针变量的大小:  不同类型的指针变量都是相同的  32位---4byte  64位---8byte

17.初识结构体

结构体可以让C语言创造出新的类型

//创造一个学生
struct stu
{
    char name{ 20 };
    int age;
    double score;
};
int main()
{
    struct stu s = { "张三",y.5 };//结构体的创建和初始化
   //三种不同的打印语法
    printf("1:%s %d %lf\n", s.name, s.age, s.score);//结构体变量.成员变量
    struct stu *ps = &s;
    printf("2: %s %d %lf\n", (*ps).name, (*ps).age, (*ps).score);
    printf("3: %s %d %lf\n", ps->name, ps->age, ps->score);//结构体指针->成员变量
    return 0;
}


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值