初识C语言大框

本文介绍了C语言的基础知识,包括C语言的定义、第一个C语言程序、数据类型、变量和常量、字符串、转义字符和注释。还涵盖了数组、指针、结构体等概念,并通过实例代码帮助理解。
摘要由CSDN通过智能技术生成

什么是C语言

c语言是一门计算机编程语言,应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

第一个C语言程序

#include<stdio.h>
int main()
{
   printf("Hello World!");
   return 0;
}

以上即c语言中最简单的一个程序,主要包含头文件stdio以及一个主函数int main() 其中也有一个printf函数,即为打印函数,即将双引号之间的内容在屏幕上打印出来,与之对应的一个输入函数为scanf函数
那么现在开始,我们大致了解一下C语言的一些基本知识吧!

C语言中的数据类型

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

以上所列举的为C语言中经常使用到的数据类型,那么就会有人问到,每个数据类型的大小是多少呢,于是我写了以下程序来计算每个数据类型的大小`

#include<stdio.h>
int main()
{
    printf("%d\n",sizeof(int));
    printf("%d\n",sizeof(short));
    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(double));
    printf("%d\n",sizeof(float));
    printf("%d\n",sizeof(long));
    printf("%d\n",sizeof(long long));
    return 0;
}

读者可以自行下去运行该段代码,得到的结果即为对应数据类型的大小

变量,常量的认识

有了以上的数据类型的定义,那么就需要了解上面所讲到的数据类型定义有哪些用途。其中,最主要的用途便是定义变量和常量。
那么问题来了什么是变量什么又是常量呢?
在我们日常的生活中,比如自己的年龄,时间,体重等,这些都是随着时间而发生改变的,而这些可以发生改变的值C语言中称之为变量,而想我们的性别,身份证号码,一年中的月数,一周的星期数都是不发生改变的,这些不发生改变的值C语言中称之为常量
于是,就有了以下定义变量

int age = 20;
char symbol = '-';
double Π = 3.1415926float hight = 1.87;

而在这些变量中又分为,全局变量和局部变量,那么这又有什么区别呢

#include<stdio.h>
int main()
{
  int number=15;  //定义在一个函数内,则其称之为局部变量,其生命周期为该整个主函数
  printf("%d",number);
  return 0;
}
#include<stdio.h>
int number=15;//定义在函数外部,则称其为全局变量,其生命周期为整个工程	
int main()
{
  printf("%d",number);
  return 0;
}

值得注意的是,局部变量优先于全局变量

#include<stdio.h>
int number=15;
int main()
{
  int number=20;
  printf("%d",number);//那么此时number输出的值会为20;
  return 0;
}

变量介绍完后,那么我们来看看常量
C语言中常量的定义通常有以下几种定义方式
1.字面常量
2.const修饰的常变量
3.#define定义的标识符常量
4.枚举常量
可由以下代码展示

#include<stdio.h>
#define MAX 30  //#define修饰的标识符常量
enum STU
{
  NAME,
  HIGHT,
  WEIGHT
};
//括号中即为枚举常量
int main()
{
  188; //字面常量
  const int num = 199; //const修饰的常变量
  return 0;
}

字符串即转义字符和注释

"hello world!" 

像这种在双引号中的一些字符组成的一串字符,我们称之为字符串,值得注意的是,字符串的结尾是"\0",在计算长度的时候,不会计入长度之中。

转义字符

#include<stdio.h>
int main()
{
  printf("\c\t123\20.c\n");
  return 0;
}

输入上述代码,则电脑上会打印出双引号内所有的东西吗?
这里就要知道什么是转义字符,转义字符就是转变其意思的字符
这里我为读者总结了一些转义字符如下

\"    //表示字符串内部的一个双引号
\\    //用于表示一个反斜杠,防止其它被解释为转义序列符
\a    //警告字符
\b    //退格符
\t    //水平制表符
\f    //进纸符
\n    //换行符
\v    //垂直制表符
\r    //回车

注释

通常写代码中有些代码不需要了,可以删掉,也可以注释掉,在我上述的代码中//后面的即为注释内容,通常用来解释代码,防止以后看代码时看不懂这段代码的意思
除了用//注释外,还有一种注释方法为/* */,即把中间的括起来的内容都注释掉

简单的选择语句

日常生活中我们需要面临很多选择,选择自己的人生,自己的工作单位等,那么在C语言中,如何进行选择呢?
其实C语言中有种语句叫做选择语句,除switch case 选择外,最常用的即为if语句,现有如下代码

#include<stdio.h>
int main()
{
  int choose=0;
  printf("请输入你的选择(1.好好学习 2.板砖)\n");
  scanf("%d",&choose);
  if(choose==1){
    printf("你选择了好好学习\n");
  }
  if(choose==0){
    printf("你选择了板砖\n");
  }
  return 0;
}

这就为一个简单的选择语句。

循环语句

循环,顾名思义即为重复某一个事或动作,在C语言中,循环语句通常有for,while和do while循环语句这里我们主要认识以下while循环语句,则有如下代码

#include<stdio.h>
int main()
{
  int num=100;
  while(num){
    printf("好好学习\n");
    num--;
  }
  printf("走上人生巅峰\n");
  return 0;
}

其中while后面括号里的即为判断真假条件,非0为真,0为假。便会跳出while循环,执行下述语句。

函数

即在主函数外写的自定义函数,在主函数中调用,其可以让整个程序看起来一目了然。

#include<stdio.h>
int get_max(int a,int b)
{
  if(a>b) return a;
  else return b;
}
int main()
{
  int num1 = 10;
  int num2 = 20;
  int max = get_max(num1, num2);
  printf("max = %d\n", max);
	return 0;
}

外部的get_max函数会给主函数返回传入的两个书中较大的数,从而简化主函数的长度。

数组

之前介绍了一些数据类型,那么问题来了,我要存入一个整数好做,那么我要是存1到100如何存入呢?这里就引出了数组的概念
数组即为一组相同类型元素的集合
值得注意的是数组元素是从下标为0的地方开始存储的。

int arr[10] = {1,2,3,4,5,6,7,8,9,10};  //数组的定义

其使用方法

#include<stdio.h>
int main()
{
  int arr[10]={1,2,3,4,5,6,7,8,9,10};
  int n=0;
  while(n!=10){
    printf("%d\n",arr[n]);
    n++;
  }
  return 0;
}

则会输出1到10这十个数字。

操作符

算术操作符,移位操作符,位操作符,赋值操作符,单目操作符,关系操作符,逻辑操作符,条件操作符,逗号表达式,下表引用、函数调用和结构成员
算术操作符: + - * /(除) %(取余)
移位操作符:<< (左移操作符) >>(右移操作符)
& 按(二进制)位与 二进制的对应位上,有0出0,全1出1
| 按(二进制)位或 二进制的对应位上,有1出1,全0出0
^ 按(二进制)位异或 二进制的对应位上,相异为1,相同为0
赋值操作符:=、+=、-=、/=、%=、>>=、<<=、&=、|=、^=。
单目操作符:
! 逻辑反 操作

  • 负值
  • 正值
    & 取地址
    sizeof 操作数的类型长度(以字节为单位)
    ~ 对一个二进制按位取反
    – 前置、后置–
    ++ 前置、后置++
    (类型) 强制类型转换
    逻辑操作符:
    && 逻辑与
    || 逻辑或
    条件操作符:
    exp1 ? exp2 ; exp3

关键字

常见的关键字有:
auto 声明自动变量
short 声明短整型变量或函数
int 声明整型变量或函数
long 声明长整型变量或函数
float 声明浮点型变量或函数
double 声明双精度变量或函数
char 声明字符型变量或函数
struct 声明结构体变量或函数
union 声明共用数据类型
enum 声明枚举类型
typedef 用以给数据类型取别名
const 声明只读变量
unsigned 声明无符号类型变量或函数
signed 声明有符号类型变量或函数
extern 声明变量是在其他文件正声明
register 声明寄存器变量
static 声明静态变量
volatile 说明变量在程序执行中可被隐含地改变
void 声明函数无返回值或无参数,声明无类型指针
if 条件语句
else 条件语句否定分支(与 if 连用)
switch 用于开关语句
case 开关语句分支
for 一种循环语句
do 循环语句的循环体
while 循环语句的循环条件
goto 无条件跳转语句
continue 结束当前循环,开始下一轮循环
break 跳出当前循环
default 开关语句中的“其他”分支
sizeof 计算数据类型长度
return 子程序返回语句(可以带参数,也可不带参数)循环条件

指针

我们知道,内存是电脑上特别重要的存储器,计算机中所有程序都是在内存中进行的,所以未来有效的使用计算机内存,就把内存分为一个个小地内存单元,每个内存单元大小的1字节,未来有效的访问内存中的每个内存单元,就给内存单元进行了编号,这些编号称为内存单元的地址,C语言中,每个变量都有地址,而取地址中的变量,就需要用到指针。

#include<stdio.h>
int main()
{
  int num = 10;
  int *p;    //定义指针变量p
  p=&num;    //使p指向num的地址,为了访问其中的值
  printf("%d\n",*p);  //通过访问地址输出num的值
  printf("%p\n",&p);  //访问p在电脑中指向的存储地址
  return 0;
}

指针变量的大小

为了知道每个类型的指针大小是否一样则有如下代码

#include<stdio.h>
int main()
{
  printf("%d\n",sizeof(char *));
  printf("%d\n",sizeof(int *));
  printf("%d\n",sizeof(double *));
  printf("%d\n",sizeof(float *));
  printf("%d\n",sizeof(short *));
  return 0;
}

则可知,指针在32位平台中大小位4字节,在64位平台中大小为8字节。

结构体

在日常生活中,我们形容一个人通常需要描述其名字,身高,体重,年龄等。可使在C语言中,没有一个类型用来描述这么多属性,于是就有了结构体struct 有代码如下

#include<stdio.h>
struct STU  //定义结构体
{
  char name[10];
  int older;
  int weight;
  float hight;
};
int main()
{
  struct STU student={"李明",20,100,1.87};  //初始化该结构体
  printf("姓名:%s 年龄:%d 体重:%d 身高:%f\n",student.name,student.older,student.weight,student.hight);
  return 0;
}

当然也有通过访问其地址输出结构体变量中的值,代码如下

#include<stdio.h>
struct STU  //定义结构体
{
  char name[10];
  int older;
  int weight;
  float hight;
};
int main()
{
  struct STU student={"李明",20,100,1.87};  //初始化结构体
  struct STU *p = &student;  //定义结构体指针p指向student的地址
  printf("姓名:%s 年龄:%d 体重:%d 身高:%f\n",student.name,student.older,student.weight,student.hight);
  printf("姓名:%s 年龄:%d 体重:%d 身高:%f\n",p->name,p->older,p->weight,p->hight);
  //通过指针p来访问结构体中变量的值,用到操作符->
  return 0;
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值