【小白必看】初始C语言(下)

提示:本文章仅简单介绍,后期会重点扩展,联合上篇一起学习初始C语言(上)


一、函数

提问:当我们需要计算一百组和数相加时,我们需要列一百个表达式么?

函数是一段可以重复使用的代码,用来独立地完成某个功能,它可以接收用户传递的数据,也可以不接收。接收用户数据的函数在定义时要指明参数,不接收用户数据的不需要指明。

函数定义:
在这里插入图片描述

举例:
//计算两组和数相加的结果
#include <stdio.h>
//声明函数名为ADD的函数
void ADD(int x, int y,int sum) {//void是函数返回值类型;ADD为函数名;x,y,sum为参数列表;int为参数类型
	sum = x + y;
	printf("sum=%d\n",sum);
}
int main()
{
	int num1 = 5;
	int num2 = 4;
	int num3 = 3;
	int num4 = 7;
	int sum1 = 0;
	int sum2 = 0;
	ADD(num1, num2,sum1);//只用调用函数,输入参数
	ADD(num3, num4,sum2);
	return 0;
}
//此程序比较简单,使用函数看不出效果,当函数体复杂时,使用函数时会比较方便

二、数组

提问:如何存储1-10这十个数字?用什么存储?

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

在这里插入图片描述
C语言规定:数组的每个元素都有一个下标,下标是从0开始的。数组可以通过下标来访问的。

举例:
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
printf("%d\n",arr[1]);//输出2
printf("%d\n",arr[5]);//输出6
printf("%d\n",arr[9]);//输出10
//这个数组是10个元素,所以下标的范围是0-9

三、操作符

算术操作符:

+     -     *     /     %
  • 分别是:加、减、乘、除、取余
  • 加(+)、减(-)、乘(*)和我们平常使用方法一样,都适用于浮点数和整数
  • 除(/):如果两个操作数都为整数,则结果也为整数;若有一个操作数为浮点数,则结果为浮点数
  • 取余(%):操作符的两个操作数必须为整数,结果为整除之后的余数

赋值操作符:

=   +=   -=   *=   /=   
  • 也称"复合运算符"。
  • 例:a+=2等同于a=a+2; a*=2等同于a=a*2;其他同理。

单目操作符:

!           逻辑反操作
-           负值
+           正值
&           取地址
sizeof      操作数的类型长度(以字节为单位)
--          前置、后置--
++          前置、后置++
*           间接访问操作符(解引用操作符)
(类型)      强制类型转换
  • 逻辑反(!):如果a为假,则!a为真,如果a为真,则非!a为假
  • sizeof:返回一个对象或者类型所占的内存字节数
  • 前置、后置++(++a、a++):前置++即先自增1,再运算;后置++即先运算,再自增1
举例:
#include<stdio.h>
int main() {
	int a1 = 2;
	int a2 = 2;
	int b1 = a1++;
	int b2 = ++a2;
	printf("a1=%d b1=%d\n", a1, b1);//输出a1=3,b1=2;先将a1的值赋给b1,再让a1自增1
	printf("a2=%d b2=%d\n", a2, b2);//输出a2=3,b2=3;先让a2自增,再将自增后得到的a2赋给b2
	return 0;
}

关系操作符:

>       大于
>=      大于等于
<       小于
<=      小于等于
!=      判断是否“不相等”
==      判断是否“相等”

逻辑操作符:

&&      逻辑与,符号两边表达式都为真才真
||      逻辑或,符号两边表达式有一边为真就为真

条件操作符

exp1 ? exp2 : exp3   exp1为真则执行exp2,为假则执行exp3

逗号表达式:

exp1, exp2, exp3, …expN  从左往右逐个计算表达式,整个逗号表达式的值为最后一个表达式(expN)的值

上述没有提到的操作符将再后面逐一展开介绍

四、常见关键字

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

五、指针

指针是一个变量,是用来存放地址的变量

在这里插入图片描述

int main()
{
    int a = 10;
    &a;//取出a的地址
    int* pa = &a;//将a的第一个字节的地址赋给指针变量pa
    *pa = 10;//对指针变量pa进行解引用,得到原值10
     printf("%p\n", &a);//打印地址,%p是以地址的形式打印
 return 0;
}
  • 取地址(&):这里a的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
  • int*:指针的类型,这里表示int型的指针
  • 解引用(*):引用其实就是引用该变量的地址,“解”就是把该地址对应的东西解开,解引用是返回内存地址中对应的对象。

六、结构体

结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员” ,其描述了一块内存区间的大小及解释意义。

比如:描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。这里只能使用结构体来描述了。

struct Stu  //Stu是结构体名
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]; //学号
};

结构体初始化:
在这里插入图片描述

//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"}; //s为该结构体的一个对象
//.操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);
  • 结构成员访问操作符(.): 结构体.成员名
    -左操作数就是结构变量的名字,右操作数就是需要访问的成员的名字。
  • 结构成员访问操作符(->)结构体指针->成员名
    -左操作数就是结构指针变量的名字,右操作数就是需要访问的成员的名字。
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值