C语言快速入门–初识C语言(下)

六、选择语句

#include<stdio.h>
int main()
{
	int n;
	scanf("%d", &n);
	if (n > 0)//如果输入大于0
		printf("正数n");
	else if (n == 0)//如果输入等于0
		printf("零n");
	else//输入既不大于0又不等于0
		printf("负数n");
	return 0;
}

常见的选择语句除了if-else外还有switch

七、循环语句

#include<stdio.h>
int main()
{
	printf("每天敲代码,努力成为大佬n");
	int line = 0;
	while (line <= 100000)//循环条件,代码小于10w行
	{
		line++;
		printf("继续敲代码n");
	}
	if (line > 100000)//敲了10w行代码
	{
		printf("成为大佬n");
	}
	return 0;
}

该条循环语句的流程图如下:

Created with Raphaël 2.3.0

每天敲代码,努力成为大佬

继续努力敲代码

代码是否大于10w行?

成为大佬

yes

no

常见的循环语句除了while语句还有for语句、do while语句。

八、函数

#include<stdio.h>
int Add(int x,int y)//创建一个函数,它的返回值是int类型
{
	int z = 0;
	z = x + y;
	return z;//返回z
}
int main()
{
	int num1, num2;
	int sum = 0;
	scanf("%d%d", &num1,&num2);
	sum = Add(num1, num2);//调用函数
	printf("%dn", sum);
	return 0;
}

我们发现,我们没有直接在主函数里实现num1与num2的直接相加减而是创建了一个函数,把num1与num2传给了函数,再返回了相加值

#mermaid-svg-6CyXr1D39pXKEi6E .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-6CyXr1D39pXKEi6E .label text{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .node rect,#mermaid-svg-6CyXr1D39pXKEi6E .node circle,#mermaid-svg-6CyXr1D39pXKEi6E .node ellipse,#mermaid-svg-6CyXr1D39pXKEi6E .node polygon,#mermaid-svg-6CyXr1D39pXKEi6E .node path{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-6CyXr1D39pXKEi6E .node .label{text-align:center;fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .node.clickable{cursor:pointer}#mermaid-svg-6CyXr1D39pXKEi6E .arrowheadPath{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .edgePath .path{stroke:#333;stroke-width:1.5px}#mermaid-svg-6CyXr1D39pXKEi6E .flowchart-link{stroke:#333;fill:none}#mermaid-svg-6CyXr1D39pXKEi6E .edgeLabel{background-color:#e8e8e8;text-align:center}#mermaid-svg-6CyXr1D39pXKEi6E .edgeLabel rect{opacity:0.9}#mermaid-svg-6CyXr1D39pXKEi6E .edgeLabel span{color:#333}#mermaid-svg-6CyXr1D39pXKEi6E .cluster rect{fill:#ffffde;stroke:#aa3;stroke-width:1px}#mermaid-svg-6CyXr1D39pXKEi6E .cluster text{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:12px;background:#ffffde;border:1px solid #aa3;border-radius:2px;pointer-events:none;z-index:100}#mermaid-svg-6CyXr1D39pXKEi6E .actor{stroke:#ccf;fill:#ECECFF}#mermaid-svg-6CyXr1D39pXKEi6E text.actor>tspan{fill:#000;stroke:none}#mermaid-svg-6CyXr1D39pXKEi6E .actor-line{stroke:grey}#mermaid-svg-6CyXr1D39pXKEi6E .messageLine0{stroke-width:1.5;stroke-dasharray:none;stroke:#333}#mermaid-svg-6CyXr1D39pXKEi6E .messageLine1{stroke-width:1.5;stroke-dasharray:2, 2;stroke:#333}#mermaid-svg-6CyXr1D39pXKEi6E #arrowhead path{fill:#333;stroke:#333}#mermaid-svg-6CyXr1D39pXKEi6E .sequenceNumber{fill:#fff}#mermaid-svg-6CyXr1D39pXKEi6E #sequencenumber{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E #crosshead path{fill:#333;stroke:#333}#mermaid-svg-6CyXr1D39pXKEi6E .messageText{fill:#333;stroke:#333}#mermaid-svg-6CyXr1D39pXKEi6E .labelBox{stroke:#ccf;fill:#ECECFF}#mermaid-svg-6CyXr1D39pXKEi6E .labelText,#mermaid-svg-6CyXr1D39pXKEi6E .labelText>tspan{fill:#000;stroke:none}#mermaid-svg-6CyXr1D39pXKEi6E .loopText,#mermaid-svg-6CyXr1D39pXKEi6E .loopText>tspan{fill:#000;stroke:none}#mermaid-svg-6CyXr1D39pXKEi6E .loopLine{stroke-width:2px;stroke-dasharray:2, 2;stroke:#ccf;fill:#ccf}#mermaid-svg-6CyXr1D39pXKEi6E .note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-6CyXr1D39pXKEi6E .noteText,#mermaid-svg-6CyXr1D39pXKEi6E .noteText>tspan{fill:#000;stroke:none}#mermaid-svg-6CyXr1D39pXKEi6E .activation0{fill:#f4f4f4;stroke:#666}#mermaid-svg-6CyXr1D39pXKEi6E .activation1{fill:#f4f4f4;stroke:#666}#mermaid-svg-6CyXr1D39pXKEi6E .activation2{fill:#f4f4f4;stroke:#666}#mermaid-svg-6CyXr1D39pXKEi6E .mermaid-main-font{font-family:"trebuchet ms", verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .section{stroke:none;opacity:0.2}#mermaid-svg-6CyXr1D39pXKEi6E .section0{fill:rgba(102,102,255,0.49)}#mermaid-svg-6CyXr1D39pXKEi6E .section2{fill:#fff400}#mermaid-svg-6CyXr1D39pXKEi6E .section1,#mermaid-svg-6CyXr1D39pXKEi6E .section3{fill:#fff;opacity:0.2}#mermaid-svg-6CyXr1D39pXKEi6E .sectionTitle0{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .sectionTitle1{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .sectionTitle2{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .sectionTitle3{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .sectionTitle{text-anchor:start;font-size:11px;text-height:14px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .grid .tick{stroke:#d3d3d3;opacity:0.8;shape-rendering:crispEdges}#mermaid-svg-6CyXr1D39pXKEi6E .grid .tick text{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .grid path{stroke-width:0}#mermaid-svg-6CyXr1D39pXKEi6E .today{fill:none;stroke:red;stroke-width:2px}#mermaid-svg-6CyXr1D39pXKEi6E .task{stroke-width:2}#mermaid-svg-6CyXr1D39pXKEi6E .taskText{text-anchor:middle;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .taskText:not([font-size]){font-size:11px}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutsideRight{fill:#000;text-anchor:start;font-size:11px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutsideLeft{fill:#000;text-anchor:end;font-size:11px}#mermaid-svg-6CyXr1D39pXKEi6E .task.clickable{cursor:pointer}#mermaid-svg-6CyXr1D39pXKEi6E .taskText.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutsideLeft.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutsideRight.clickable{cursor:pointer;fill:#003163 !important;font-weight:bold}#mermaid-svg-6CyXr1D39pXKEi6E .taskText0,#mermaid-svg-6CyXr1D39pXKEi6E .taskText1,#mermaid-svg-6CyXr1D39pXKEi6E .taskText2,#mermaid-svg-6CyXr1D39pXKEi6E .taskText3{fill:#fff}#mermaid-svg-6CyXr1D39pXKEi6E .task0,#mermaid-svg-6CyXr1D39pXKEi6E .task1,#mermaid-svg-6CyXr1D39pXKEi6E .task2,#mermaid-svg-6CyXr1D39pXKEi6E .task3{fill:#8a90dd;stroke:#534fbc}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutside0,#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutside2{fill:#000}#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutside1,#mermaid-svg-6CyXr1D39pXKEi6E .taskTextOutside3{fill:#000}#mermaid-svg-6CyXr1D39pXKEi6E .active0,#mermaid-svg-6CyXr1D39pXKEi6E .active1,#mermaid-svg-6CyXr1D39pXKEi6E .active2,#mermaid-svg-6CyXr1D39pXKEi6E .active3{fill:#bfc7ff;stroke:#534fbc}#mermaid-svg-6CyXr1D39pXKEi6E .activeText0,#mermaid-svg-6CyXr1D39pXKEi6E .activeText1,#mermaid-svg-6CyXr1D39pXKEi6E .activeText2,#mermaid-svg-6CyXr1D39pXKEi6E .activeText3{fill:#000 !important}#mermaid-svg-6CyXr1D39pXKEi6E .done0,#mermaid-svg-6CyXr1D39pXKEi6E .done1,#mermaid-svg-6CyXr1D39pXKEi6E .done2,#mermaid-svg-6CyXr1D39pXKEi6E .done3{stroke:grey;fill:#d3d3d3;stroke-width:2}#mermaid-svg-6CyXr1D39pXKEi6E .doneText0,#mermaid-svg-6CyXr1D39pXKEi6E .doneText1,#mermaid-svg-6CyXr1D39pXKEi6E .doneText2,#mermaid-svg-6CyXr1D39pXKEi6E .doneText3{fill:#000 !important}#mermaid-svg-6CyXr1D39pXKEi6E .crit0,#mermaid-svg-6CyXr1D39pXKEi6E .crit1,#mermaid-svg-6CyXr1D39pXKEi6E .crit2,#mermaid-svg-6CyXr1D39pXKEi6E .crit3{stroke:#f88;fill:red;stroke-width:2}#mermaid-svg-6CyXr1D39pXKEi6E .activeCrit0,#mermaid-svg-6CyXr1D39pXKEi6E .activeCrit1,#mermaid-svg-6CyXr1D39pXKEi6E .activeCrit2,#mermaid-svg-6CyXr1D39pXKEi6E .activeCrit3{stroke:#f88;fill:#bfc7ff;stroke-width:2}#mermaid-svg-6CyXr1D39pXKEi6E .doneCrit0,#mermaid-svg-6CyXr1D39pXKEi6E .doneCrit1,#mermaid-svg-6CyXr1D39pXKEi6E .doneCrit2,#mermaid-svg-6CyXr1D39pXKEi6E .doneCrit3{stroke:#f88;fill:#d3d3d3;stroke-width:2;cursor:pointer;shape-rendering:crispEdges}#mermaid-svg-6CyXr1D39pXKEi6E .milestone{transform:rotate(45deg) scale(0.8, 0.8)}#mermaid-svg-6CyXr1D39pXKEi6E .milestoneText{font-style:italic}#mermaid-svg-6CyXr1D39pXKEi6E .doneCritText0,#mermaid-svg-6CyXr1D39pXKEi6E .doneCritText1,#mermaid-svg-6CyXr1D39pXKEi6E .doneCritText2,#mermaid-svg-6CyXr1D39pXKEi6E .doneCritText3{fill:#000 !important}#mermaid-svg-6CyXr1D39pXKEi6E .activeCritText0,#mermaid-svg-6CyXr1D39pXKEi6E .activeCritText1,#mermaid-svg-6CyXr1D39pXKEi6E .activeCritText2,#mermaid-svg-6CyXr1D39pXKEi6E .activeCritText3{fill:#000 !important}#mermaid-svg-6CyXr1D39pXKEi6E .titleText{text-anchor:middle;font-size:18px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E g.classGroup text{fill:#9370db;stroke:none;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);font-size:10px}#mermaid-svg-6CyXr1D39pXKEi6E g.classGroup text .title{font-weight:bolder}#mermaid-svg-6CyXr1D39pXKEi6E g.clickable{cursor:pointer}#mermaid-svg-6CyXr1D39pXKEi6E g.classGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-6CyXr1D39pXKEi6E g.classGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E .classLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.5}#mermaid-svg-6CyXr1D39pXKEi6E .classLabel .label{fill:#9370db;font-size:10px}#mermaid-svg-6CyXr1D39pXKEi6E .relation{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-6CyXr1D39pXKEi6E .dashed-line{stroke-dasharray:3}#mermaid-svg-6CyXr1D39pXKEi6E #compositionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #compositionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #aggregationStart{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #aggregationEnd{fill:#ECECFF;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #dependencyStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #dependencyEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #extensionStart{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E #extensionEnd{fill:#9370db;stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E .commit-id,#mermaid-svg-6CyXr1D39pXKEi6E .commit-msg,#mermaid-svg-6CyXr1D39pXKEi6E .branch-label{fill:lightgrey;color:lightgrey;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .pieTitleText{text-anchor:middle;font-size:25px;fill:#000;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .slice{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E g.stateGroup text{fill:#9370db;stroke:none;font-size:10px;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E g.stateGroup text{fill:#9370db;fill:#333;stroke:none;font-size:10px}#mermaid-svg-6CyXr1D39pXKEi6E g.statediagram-cluster .cluster-label text{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E g.stateGroup .state-title{font-weight:bolder;fill:#000}#mermaid-svg-6CyXr1D39pXKEi6E g.stateGroup rect{fill:#ECECFF;stroke:#9370db}#mermaid-svg-6CyXr1D39pXKEi6E g.stateGroup line{stroke:#9370db;stroke-width:1}#mermaid-svg-6CyXr1D39pXKEi6E .transition{stroke:#9370db;stroke-width:1;fill:none}#mermaid-svg-6CyXr1D39pXKEi6E .stateGroup .composit{fill:white;border-bottom:1px}#mermaid-svg-6CyXr1D39pXKEi6E .stateGroup .alt-composit{fill:#e0e0e0;border-bottom:1px}#mermaid-svg-6CyXr1D39pXKEi6E .state-note{stroke:#aa3;fill:#fff5ad}#mermaid-svg-6CyXr1D39pXKEi6E .state-note text{fill:black;stroke:none;font-size:10px}#mermaid-svg-6CyXr1D39pXKEi6E .stateLabel .box{stroke:none;stroke-width:0;fill:#ECECFF;opacity:0.7}#mermaid-svg-6CyXr1D39pXKEi6E .edgeLabel text{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .stateLabel text{fill:#000;font-size:10px;font-weight:bold;font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family)}#mermaid-svg-6CyXr1D39pXKEi6E .node circle.state-start{fill:black;stroke:black}#mermaid-svg-6CyXr1D39pXKEi6E .node circle.state-end{fill:black;stroke:white;stroke-width:1.5}#mermaid-svg-6CyXr1D39pXKEi6E #statediagram-barbEnd{fill:#9370db}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-cluster rect{fill:#ECECFF;stroke:#9370db;stroke-width:1px}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-cluster rect.outer{rx:5px;ry:5px}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-state .divider{stroke:#9370db}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-state .title-state{rx:5px;ry:5px}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-cluster.statediagram-cluster .inner{fill:white}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-cluster.statediagram-cluster-alt .inner{fill:#e0e0e0}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-cluster .inner{rx:0;ry:0}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-state rect.basic{rx:5px;ry:5px}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-state rect.divider{stroke-dasharray:10,10;fill:#efefef}#mermaid-svg-6CyXr1D39pXKEi6E .note-edge{stroke-dasharray:5}#mermaid-svg-6CyXr1D39pXKEi6E .statediagram-note rect{fill:#fff5ad;stroke:#aa3;stroke-width:1px;rx:0;ry:0}:root{--mermaid-font-family: '"trebuchet ms", verdana, arial';--mermaid-font-family: "Comic Sans MS", "Comic Sans", cursive}#mermaid-svg-6CyXr1D39pXKEi6E .error-icon{fill:#522}#mermaid-svg-6CyXr1D39pXKEi6E .error-text{fill:#522;stroke:#522}#mermaid-svg-6CyXr1D39pXKEi6E .edge-thickness-normal{stroke-width:2px}#mermaid-svg-6CyXr1D39pXKEi6E .edge-thickness-thick{stroke-width:3.5px}#mermaid-svg-6CyXr1D39pXKEi6E .edge-pattern-solid{stroke-dasharray:0}#mermaid-svg-6CyXr1D39pXKEi6E .edge-pattern-dashed{stroke-dasharray:3}#mermaid-svg-6CyXr1D39pXKEi6E .edge-pattern-dotted{stroke-dasharray:2}#mermaid-svg-6CyXr1D39pXKEi6E .marker{fill:#333}#mermaid-svg-6CyXr1D39pXKEi6E .marker.cross{stroke:#333}

:root { --mermaid-font-family: "trebuchet ms", verdana, arial;}
#mermaid-svg-6CyXr1D39pXKEi6E {
color: rgba(0, 0, 0, 0.75);
font: ;
}

num1 num2
Add函数的x y
返回值z 赋值给sum
原材料
工厂加工
产品

我们可以把函数比喻成一个厂,在主函数外对输入的“原材料”进行加工得到的返回值“产品”

九、数组

数组:能够存放一组相同类型的元素。

int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
//创建了个数组arr,数组有十个元素,分别为1,2,3·····

这样我们就可以创建一个数组了。

int arr[100]={0};
//创建了个数组arr,数组有100个元素
//第一个元素初始化为0,剩下的元素默认初始化为0;

数组是有下标的,下标是从0开始逐次加1。如图:
在这里插入图片描述
arr[8]值为9

十、操作符

C语言提供了丰富的操作符,这里笔者只作简单介绍。

1.算术操作符

	算术操作符:	+  -   *  /  %
	printf("%dn", 7 / 3);//2
	printf("%fn", 7.0/ 3);//2.333333
	printf("%dn", 7 % 3);//1

2.移位操作符

移位操作符:>>  <<

移位移动的是二进制位

3.位操作符

	 &  			 ^  		  |  
   按位与         按位异或       按位或

这些操作符都是二进制操作符

4.赋值操作符

赋值操作符:= += -= *= /= &= ^=  |=    >>=   <<=
		a=10;//把10赋值给a
		a+=10;//即a=a+10;复合操作符

5.单目操作符

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
~           对一个数的二进制按位取反
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)       强制类型转换

单目操作符只有一个操作数

单目操作符:
//C语言中,0为假,非0为真
	int flag=0;
 if(!flag)//flag为假,!反操作为真
	{		//()内为真,输出hello
		printf("hellon");
	}
int a=+10;//10
int b=-10;//-10
int size=sizeof(a);//4// 单位为字节
int size_int=sizeof(int);//4
int c=10;
int d1=++c;//d1=11//前置++,先++,再使用//c=11
c=10;
int d2=c++;//d2=10//后置++,先使用,后++//c=11
int e=3.14//3//会报警告
int f=(int)3.14//3//强制类型转换
//把3.14转化为int类型
b=a+10;
//  +  有两个操作数a与10
//  +  是**双目操作符**

6.关系操作符

关系操作符:
>
>=
<
<=
!=   用于测试“不相等”
==      用于测试“相等

7.逻辑操作符

&&     		逻辑与
||          逻辑或
int a=3;
int b=4;
if((a==3)&&(b==4))//并且// &&两边都需为真,整体才为真
printf("hello1n");//输出hello1
if((a==3)&&(b==5))//右边为假整体为假
printf("hello2n");//不输出
if((a==3)||(b==4))//或者// ||两边只需一个为真,整体就为真
printf("hello3");//输出hello3
if((a==2)||(b==4))//真
printf("hello4");//输出hello4
if((a==2)||(b==5))//假
printf("hello5");//不输出

8.条件操作符

条件操作符又叫三目操作符

		exp1 ? exp2 : exp3
	int a=3,b=5;
	int max=a>b?a:b;//max=5
	//exp1为真返回exp2,反之返回exp3
	//3>5为假,返回b

9.逗号表达式

	exp1, exp2, exp3, …expN
	int a=3,b=5,c=0;
	int d=(a-=3,b+=a,c=a-b,b=a-4);//d=-4
	//逗号表达式,表达式会从左往右依次计算
	//整个表达式的结果是最后一个表达式的结果

10.下标引用、函数调用和结构成员

		[] 		() 		.		 ->
eg.
	a[1]   		prime(3)     stu.a     p->next
数组元素访问     函数调用      	 结构成员

十一、常见关键字

关键字:c语言本身提供给我们的,
不能自己创造也不能作为变量名

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
unsigned   void  	volatile   while

这里我们暂时只介绍其中几个关键字。

1.关键字 typedef

typedef 顾名思义是类型定义,这里应该理解为类型重命名

typedef unsigned int uint;
//这里的unsigned int 就被命名为了uint
uint num = 10;
//等价于 unsigned int num=10;

2.关键词 register

寄存器关键字register

int num1=10;//4个字节
register int num2=20;//建议将20放在寄存器中

在这里插入图片描述
register仅仅是是建议把变量放到寄存器中来提高速度,但是最后是否放到寄存器中,取决于编译器。

3.关键字 static

c语言中static可用来修饰变量函数

  1. 修饰局部变量-静态局部变量
  2. 修饰全局变量-静态全局变量
  3. 修饰函数-静态函数

1. 修饰局部变量-静态局部变量

1.代码1
#include<stdio.h>
void test()
{//进入函数,a重新创建
	int a=5;//a又变成了5
	a++;
	printf("%d ",a);
}//出函数后a被销毁
int main()
{
	int i=0;
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}//输出 6 6 6 6 6
1.代码2
#include<stdio.h>
void test()
{
	static int a=5;//static修饰int a
	a++;
	printf("%d ",a);
}//static修饰的局部变量出范围,不销毁,保留上次的值
int main()
{
	int i=0;
	while(i<5)
	{
		test();
		i++;
	}
	return 0;
}//输出 6 7 8 9 10

总结: 一旦static修饰局部变量时,局部变量就变成了静态的局部变量,出了局部范围,不会销毁,下一次进入函数(局部范围),依然存在。
原因:static修饰的局部变量是存储在静态区的。
static修饰局部变量时,实际上是改变了变量的存储位置,本来一个变量释放到栈区的,被修饰后放到了静态区,从而导致,出了作用域依然存在,生命周期没有结束。如图:
在这里插入图片描述
2. 修饰全局变量-静态全局变量

2.代码1 
//test1.c文件
int g_val=2021;//在test1.c中定义全局变量g_val
//test2.c文件
#include<stdio.h>
//extern是用来声明外部符号的
extern int g_val;
int main()
{
printf("%dn",g_val);//输出2021
return 0;
}

编译器正常运行,输出2021

2.代码2 
//test1.c文件
static int g_val=2021;
//在test1.c中定义**静态**全局变量g_val
//test2.c文件
#include<stdio.h>
//extern是用来声明外部符号的
extern int g_val;
int main()
{
printf("%dn",g_val);//编译器报错
return 0;
}

我们用static 修饰全局变量
报错如图:
在这里插入图片描述
为什么呢?
原因: 一个全局变量是具有外部链接属性的,但是被static修饰后,外部链接属性就变成了 内部链接属性,只能在自己所在的源文件内部使用,不能在其他文件内部使用。
使用感觉上是作用域变小了。
3. 修饰函数-静态函数

3.代码
//test1.c文件
static int Add(int x,int y)
{
return x+y;
}
//在test1.c中定义**静态**函数Add
//test2.c文件
#include<stdio.h>
//extern是用来声明外部符号的
extern int Add(int x,int y);
int main()
{
printf("%dn",Add(2,3));//编译器报错
return 0;
}

我们发现,和2.类似,无static修饰函数时函数正常运行,输出5,有static修饰时,编译器会报错。
在这里插入图片描述
原因: 一个函数是具有外部链接属性的,但是被static修饰后,外部链接属性就变成了 内部链接属性,这时这个函数只能在自己所在的源文件内部使用,不能在其他文件内部使用。
使用感觉是也是作用域变小了。

十二、define定义常量和宏

#include<stdio.h>
//#define 定义常量
#define MAX 100
#define STR "Hello"
int main()
{
	printf("%dn", MAX);//输出100
	printf("%sn",STR);//输出Hello
	return 0;
}
#include<stdio.h>
//#define定义宏
#define MAX(x,y) ((x)>(y)?(x):(y))
//尽量多用括号把x,y括起来,避免操作符优先级导致的错误
int main()
{
	printf("%dn", MAX(2, 3));//输出3
	return 0;
}

原理:
#define 定义常量和宏会在预编译阶段替换为相应的定义。

十三、指针

1.内存与地址

内存是电脑上特别重要的存储器,计算机中所有程序的运行都是在内存中进行的 。
所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是1个字节
为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址
在这里插入图片描述
我们定义一个变量int a=1;,进入调试打开内存窗口,对a取地址,&a,发现a被存在了一个地址上,a是整型变量,在内存中占了四个字节在这里插入图片描述
为了更直观地看到a的地址我们可以输入下列代码。

	int a = 1;
	printf("%pn",&a);
	//&是取地址操作符,&a意思为找到a的地址
	//%p地址的打印

在这里插入图片描述
地址的本质是一个二进制序列表示的编号

2.指针

指针变量

	int a = 1;
	int* pa = &a;
	//pa是用来存放a的地址的,
	//所以我们把pa叫做指针变量。

内存单元都有编号,这个编号就是地址,我们把这个地址也叫指针
在这里插入图片描述
指针的解引用:

	int a = 1;
	int* pa = &a;
	printf("%dn",*pa);//输出了1
	//*pa 中*是解引用操作符
	//意思是通过pa指向的地址找到a

指针的大小

#include<stdio.h>
int main()
{
	int a = 1;
	char ch = 'w';
	int* pa = &a;
	char* pc = &ch;
	printf("%dn",sizeof(pa));
	printf("%dn", sizeof(pc));
	return 0;
}

在这里插入图片描述
指针的大小不取决于所指数据类型。

32位平台 指针大小为4个字节
64位平台 指针大小为8个字节
在这里插入图片描述

十四、结构体

结构体使得C语言有能力描述复杂类型
定义结构体与结构体变量

struct Stu
{
	char name[20];//名字--字符串
	int age;      //年龄--整型
	char sex[8];  //性别--字符串
	char id[15];//学号--字符串
};
int main()
{
	//结构体变量
	struct Stu s1 = { "zhang",18,"man","2021001" };
	//学生1
	struct Stu s2 = { "wang",17,"woman","2021002" };
	//学生2
	return 0;
}

访问成员变量

	//.为结构成员访问操作符
	printf("%s %d %s %sn", s1.name, s1.age, s1.sex, s1.id);
	//->操作符
	struct Stu* ps = &s2;
	//结构体指针
	printf("%s %d %s %sn", ps->name, ps->age, ps->sex, ps -> id);

结语

初始C语言的内容就介绍到这里了,感谢各位读者的阅读,希望能对大家有所帮助,如果觉得博主写得不错的话,希望大家多多一键三连。如果笔者这篇文章存在一些不足或错误的地方,也恳请大家批评斧正!谢谢大家了!

在这里插入图片描述

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
THE END
分享
二维码
< <上一篇
下一篇>>