开端步入正轨,有点那味了
挑选句子
if句子
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int input = 0;
printf("你要好好敲代码吗?(1/0)n");
scanf("%d", &input);
if (input == 1)
printf("一份好工作n");
else
printf("回家卖红薯n");
return 0;
}
循环句子
while句子
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
int main()
{
int line = 0;
printf("入坑,开端学习n");
while (line < 20000)
{
printf("敲一行代码:%dn",line);
line++;
}
if (line >= 20000)
printf("ding~找到一个好工作d=====( ̄▽ ̄*)bn");
return 0;
}
函数
界说一个求和函数
int Add(int x, int y)
{
int z = x + y;
return z;
}
int main()
{
int a = 100;
int b = 200;
int sum = 0;
sum = Add(a, b);
printf("sum=%dn", sum);
return 0;
}
数组
一组相同类型元素的调集
- 界说数组:int arr[10]={0};//界说了一个寄存10个整数数字的数组
- char ch[20};//字符型数组
- float arr2[5];//浮点型数组
数组是经过下标拜访元素,例如:int arr[10]={1,2,3,4,5,6,7,8,9,10};经过句子printf(“%dn”,arr[4]);能够打印数字5;即arr[下标]
操作符
此次介绍了移位操作符
左移操作符<<,向左移动二进制位;
移位之后变量自身是不变的,变的是操作后发生的一个值,例如代码
int main()
{
int a=1;//二进制状况下后四位是0001
int b=a<<2;
printf("%dn",b);//b的值为4,二进制状况下最终四位的状况是0100
printf("%dn",a);//变量a仍是1
return 0;
}
单目操作符、双目操作符、三目操作符
所谓几目便是指的有几个操作数
单目操作符有:!a,-a,,a++;双目操作符有:a+b;三目操作符有:exp1?exp2:exp3,这个表达式的意思能够解说为exp1若建立,则整个表达式的值为exp2,若exp1不建立则整个表达式的值为exp3
关键字
typedef
为类型重命名,即给一个类型起名字
typedef unsigned int uint_32;//将unsigned int重命名为unint_32,所以unint_32也是一个类型名
static
1.润饰局部变量–静态局部变量:使局部变量的生命周期变长
2.润饰全局变量–静全局部变量:使全局变量只能在自己地点的源文件内运用
3.润饰函数–静态函数:把函数原本的外部链接特点变成内部链接特点
总结:让效果规模小的变大,大的变小
指针
指针变量:一种用来寄存地址的指针变量,类型为int*(这儿的*仅仅个方式,阐明变量是指针变量)
解引证:依据指针变量寄存的地址找到该地址的变量;*变量名,(这儿的*是操作符)
int main()
{
int a=10;//界说一个变量,请求4个字节内存
int* p=&a;//取地址,把地址放到p的请求的内存里,这儿的*阐明p便是指针变量
*p=20;//* --解引证操作符,依据p中的地址找到a,并对a进行操作
printf("a=%dn",a);
return 0;//打印成果为20
}
履行流程能够理解为:房东找了一个房间租借,房间起了个名叫做a雅居,住进来个人叫10君,房东看了看a雅居的门牌号(这个进程便是&a),假定地址为0x0012ff40记在簿本p上,簿本的标准为int*;某一天房东看10君不顺眼,想让20君住进去,房东依据簿本p上的地址(即0x0012ff40)找到了10君(这个进程便是*p),把他赶了出去,让20君住进去;现在去a雅居找到的人便是20君
流程图:
??int a=10;解说:请求一块内存命名为a,这块内寄存的值为10,这块内存的地址为0x0012ff40
int*p=&a;解说:请求一块内存命名p,把a的地址放到这块内存中;这块内存p也有地址,但此刻不考虑(&a便是获取a的地址)
*p=20;解说:*p(即解引证)依据p内存储的地址找到a,此刻*p就相当于a,对*p的操作相当于对a进行操作;所以把20赋给*p便是把20赋给a
指针变量的巨细
指针存储的是地址,32位的机器地址是32位,也便是4个字节,所以32位的机器指针巨细为4个字节;同理在64位的机器上地址是64位,占8个字节,所以所以64位的机器指针巨细为8个字节
指针变量的巨细只与渠道位数有关,和变量类型无关
int main() //32位渠道
{
printf("%dn",sizeof(char*));//占4个字节
printf("%dn",sizeof(short*));//占4个字节
printf("%dn",sizeof(int*));//占4个字节
printf("%dn",sizeof(double*));//占4个字节
return 0;
}
结构体
用来描绘杂乱目标,实质是一种自界说发明出来的类型
结构体类型内有成员,要用.操作符拜访
struct Book //结构体的类型
{
char name[20];//书名
short price;//价格
};//这儿的分号不行短少!!!!!!
int main()
{
//运用结构体类型--创立一个该类型的结构体变量
struct Book b1 = { "C言语程序设计", 55 };
printf("书名:%sn", b1.name);//此处的.为特点操作符,用于拜访结构体成员
printf("价格:%d元n", b1.price);
b1.price = 15;//拜访到价格成员,更改数值
printf("修改后的价格:%d元n", b1.price);
return 0;
}
运用指针pb打印出书名和价格(运用.操作符打印)
struct Book
{
char name[20];
short price;
};
int main()
{
struct Book b1 = { "C言语程序设计", 55 };
struct Book* pb = &b1;//界说指针变量pb *标明是指针变量
//运用指针pb打印出书名和价格
printf("%sn", (*pb).name);//解引证
printf("%dn", (*pb).price);//
return 0;
}
还能够运用->操作符打印,愈加快捷
struct Book
{
char name[20];
short price;
};
int main()
{
struct Book b1 = { "C言语程序设计", 55 };
struct Book* pb = &b1;//界说结构体指针变量pb *标明是指针变量
printf("%sn", pb->name);
printf("%dn", pb->price);
return 0;
}
.操作符和->操作符的比较:
->操作符的运用结构是:结构体指针->成员 只需界说了结构体指针变量就能够运用,直接从结构体指针变量指向成员;但.操作符的运用结构是:结构体变量.成员 需求结合解引证,繁琐
关于结构体变量的更改
前文运用b1.prince=15;句子能够更改价格,由于prince是变量,所以能够直接更改数值;可是结构体中的书名name是数组名,实质上是地址,不能够直接更改,所以运用b1.name=”C++程序设计”;句子会报错不能够更改。
想要更改如下所示:
struct Book//结构体的类型
{
char name[20];//书名
short price;//价格
};
int main()
{
struct Book b1 = { "C言语程序设计", 55 };
strcpy(b1.name,"C++程序设计");//全称strcpy-string copy,是一个字符串复制函数
printf("%sn",bi.name);
return 0;
}
strcpy()函数全称是:strcpy-string copy,是一个字符串复制函数
此函数有两个参数,strcpy(目的地,”需复制的字符”)
