首页 > 其他分享 >初识c语言

初识c语言

时间:2023-09-10 17:05:26浏览次数:44  
标签:main return 语言 int sum 初识 printf include

1.什么是c语言

c语言是一门计算机语言(计算机语言是什么呢?   人与计算机交流的语言    还有C/C++/JAVA//python)

2.第一个代码

1.创建工程(新建项目C++空项目)

2.添加源文件(视图-解决方案管理器)

.c - 源文件

.h - 头文件head

#include<stdio.h>
int main()//主函数-程序的入口-main函数仅有一个
{
	printf("hello wold\n");
	printf("hehe\n");函数-print function-printf-打印函数
return 0;//返回0
}

3.数据类型

%d - 打印整型           
%c - 打印字符
%f - 打印浮点数字-打小数
%p - 以地址的形式打印
%x - 打印16进制数字
char        //字符数据类型              (用来向内存申请空间,用来存放)
short       //短整型
int         //整形
long        //长整型    
long long   //更长的整形
float       //单精度浮点型
double      //双精度浮点型
//c语言有没有字符串类型?


  • 为什么出现这么多类型?
  • 每种类型的大小是多少?
sizeof计算   向内存申请的空间内存        单位:字节

初识c语言_#include

//计算机中常见的单位
//bit - 比特位(存一个二进制位1/0)
//byte - 字节(1byte=8bit)      一个字节=8个比特位
//kb(1kb=1024byte)
//mb(1mb=1024kb)
//gb(1gb=1024mb)
//tb(1tb=1024gb)
//pb(1pb=1024tb)

注意:存在那么多的类型,其实是为了更加丰富的表达生活中的各种值

类型使用

char ch='w';
int weight=120;
int salary=20000;

4.1变量,常量

定义变量的方法

int age=150;
float weight=45.5f;
char ch='w';

4.2变量的分类

  • 局部变量
  • 全局变量
#include<stdio.h>
int one = 2023;//全局变量
int main()
{
	    int two = 2022;//局部变量
		//下面定义的one会不会遇到问题??
		int one = 2021;//局部变量
		printf("global=%d\n", global);
return 0;
}

总结:上面的局部变量one变量的定义其实没什么问题!

当局部变量和全局变量同名时候,局部变量优先使用。 (建议局部和全局不要相同,容易产生bug)

4.3变量的使用

#include<stdio.h>
int main()
{
	//计算两个数的和
	int one = 0;
	int two = 0;
	//输入语句
	scanf_s("%d%d", &one,& two);//‘&’取地址符号(好比输入你的身份证号找到你的人)
	int sum = 0;
	sum = one + two;
	//输出语句
	printf("sum=%d", sum);
  return 0;
}

4.4变量的作用域和生命周期

作用域 

作用域(scope),程序设计概念,通常来说,一段程序代码在所用带的名字并不总是有效/可用的

而限定这个名字的可用性的代码就是这个名字的作用域(这个变量哪里可以用,哪里就是它的作用域(局部和全局))

  1. 局部变量的作用域是变量所在的局部变量范围。
  2. 全局变量的作用域是整个工程。
生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

  1. 局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
  2. 全局变量的生命周期是:整个程序的生命周期

4.5常量

c语言中的常量和变量的定义的形式有所差异。

c语言中的常量分为以下几种

  • 字面常量 3;
  • const修饰的常变量(const-常属性 ,const修饰的常变量).
  • #define定义的标识符常量
  • 枚举常量 (enum)
#include<stdio.>
int main()
{ 3;
  99999;//字面常量
}

#include<stdio.>
int main()
{ const int a=10;//这里的a是const修饰的常变量
  a=1000;//且a不能修改(上手你就知道了)
 printf("%d",a)
  return 0;}

#include<stdio.>
#define MAX 10//#define的标识符常量
int main()
{ int arr[MAX]={0};
  printf("%d",MAX);
  return 0;}

#include<stdio.>
int main() 
 enum color
{
  RED,
  YELLOW,
  BLUE};//RED,YELLOW,BLUE是枚举常量
{  enum color color=BLUE;
   return 0;
}

5.1字符串+转义字符+注释

字符串

“hello world"      ”abcdefg“           ” “//空字符串

这种由双引号(Double Quote)引起来的一串字符称为字符串字面值(String Literal),或者简称字符串。

注:字符串的结束标志是一个\0的转义字符。在计算字符串长度的时候\0是结束标志,不算字符串的内容

#include<stdio.h>
int main()
{
	char arr1[] = "abc";//数组
	char arr2[] = { 'a','b','c' };
	char arr3[] = { 'a','b','c','\0'};//'\0'字符串的结束标志
	printf("%s\n", arr1);
	printf("%s\n", arr2);
	printf("%s\n", arr3);
	return 0;
}

ASCII编码

数据在计算机上存储的时候,存储的是二进制

ASCII编码,字符对应的值叫ASCII码值

初识c语言_局部变量_02

2.转义字符

转变意思(在这里输入的 c:\test\32\test.c, 输出却是别的样子)

初识c语言_局部变量_03

则要了解一下这个东西了:转义字符

初识c语言_操作符_04

#include<string.h>
#include<stdio.h>
int main()
{ 
	printf("%d\n", strlen("c:\test\32\test.c"));
    //c : \t est \32 \t e s t  .c     结果13
	  //\32   32是2个8进制数字
  	//32作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符
	  //32-->10进制26-->作为ASCII码值代表的字符
	return 0;
}
3.注释:

1.代码在有不需要的代码可以删除,也可以注释掉

2代码在有些代码比较难懂,可以加一下注释文章

比如:

#include<string.h>
#include<stdio.h>
int main()
{ 
	printf("%d\n", strlen("c:\test\32\test.c"));
    /*c : \t est \32 \t e s t  .c     结果13*/
	  /*\32   32是2个8进制数字*/
    
  	//32作为8进制代表的那个十进制数字,作为ASCII码值,对应的字符
	  //32-->10进制26-->作为ASCII码值代表的字符
	return 0;
}

注释有两种风格:

  1. c语言风格的注释/*xxxxx*/
  • 缺陷:不能嵌套
  1. c++风格的注释//Xxxxxxx
  • 可以注释一行也可以注释多行

6.1选择语句

初识c语言_#include_05

#include<stdio.h>
int main()
{ 
	int input = 0;
	printf("好好学习\n");
	printf("你要好好学习吗?(1/0)\n");
	scanf_s("%d", &input);
	if (input == 1)
		printf("考个好成绩\n");
	else
		printf("不及格\n");
	return 0;
}

结果

初识c语言_操作符_06

初识c语言_局部变量_07

6.2循环语句

c语言中然后实现循环呢?

  • while语句
  • for语句
  • do...while语句
//while循环
#include<stdio.h>
int main()
{ 
	int line = 0;
	printf("好好敲代码\n");
	while (line <=20000)//20000行代码
	{
		printf("敲代码%d\n",line);
		line++;
	}
	if (line>20000)
		printf("好工作\n");
	return 0;
}
//for循环
#include<stdio.h>
int main()
{
	int line = 0;
	printf("好好敲代码\n");
	for (int line = 0; line <= 20000; line++)
	{
		printf("敲代码%d\n", line);
	}
	if (line>20000);
	printf("好工作\n");
	return 0;
}
#include<stdio.h>
int main()
{
	printf("好好敲代码\n");
	int line = 0;
	do
	{
		line++;
		printf("敲代码%d\n", line);
	}
	while(line <= 20000);
	if(line 20000);
	printf("好工作\n");
	return 0;
}

初识c语言_局部变量_08

7函数

特点:简化代码(代码重复)

#include <stdio.h>//库函数
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf_s("%d %d", &num1, &num2);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0;
}
上述代码,写成函数如下://自定义函数
#include <stdio.h>
int Add(int x, int y)
{
   int z = x+y;
   return z;
}
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf_s("%d %d", &num1, &num2);
    sum = Add(num1, num2);
    printf("sum = %d\n", sum);
    return 0;
}

结果

初识c语言_局部变量_09

8.数组

要储存1-10的数字,怎么储存?

c语言中给了数组的定义:一组相同类型元素的集合

数组可以通过下标来访问:

初识c语言_#include_10

数组定义
int arr[10]={1,2,3,4,5,6,7,8,9,10};//定义一个整型数组,最多放10个元素
数组的使用
#include <stdio.h>
int main()
{
    int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };//定义一个整型数组,最多放10个元素
   // char ch[20];
    //float arr[5];
    int i = 0;
    while (i<10)
    {
        printf("%d\n", arr[i]);
        i++;
    }
    return 0;
}

9.操作符

算数操作符:+ - * / %
移位操作符: >> <<
位操作符:& ^ |
赋值操作符:=  +=  -=  *=  /=  &=  ^=  |=   >>=  <<=

 单目操作符

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

关系操作符

>
>=
<
<=
!=   用于测试“不相等”
==   用于测试“相等”

逻辑操作符

&&   逻辑与
||   逻辑或

条件操作符

exp1 ? exp2 : exp3

逗号表达式

exp1, exp2, exp3, …expN

下标引用,函数调用和结构成员

[]  ()  .  ->

常见关键字

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

C语言提供了丰富的关键字,这些关键字都是语言本身预先设定好的,用户自己是不能创造的关键字的

10关键字 typedef

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

比如:

//将unsigned int 重命名uint_1,所以uint_32也是一个类型名
typedef unsigned int uint_1;
int main()
{
  //观察num1和num2,这两个变量的类型是一样的
  unsigned int num1=0;
  uint_1 num2=0;
   return 0;
  }

10.2关键字static

  在C语言中:

  static是用来修饰变量和函数的

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

  2.修饰全局变量-静态全局变量

  3.修饰函数-静态函数

10.3.1修饰局部变量
#include<stdio.h>//代码1
void test()
{
  int i=0;
  i++;
  printf("%d",i);
}
int main()
{
  int i=0;
  for(i=0;i<10;i++)
  {
    test();
  }
  return 0;
}

运算结果

初识c语言_局部变量_11

#include<stdio.h>//代码2
void test()
{
	static int i = 0;
	i++;
	printf("%d", i);
}
int main()
{
	int i = 0;
	for (i = 0; i < 10; i++)
	{
		test();
	}
	return 0;
}

运算结果

初识c语言_操作符_12

结论:static修饰局部变量改变了变量的生命周期,让静态局部变量出了作用域依然存在,到程序结束,生命周期才结束。

10.3.2修饰全局变量
//代码1
#include<stdio.h>
//add.c
int g_val = 2023;
//test.c
extern int g_val = 2023;
int main()
{
	printf("%d\n", g_val);
	return 0;
}
//代码2
#include<stdio.h>
//add.c
static int g_val = 2023;
//test.c
extern static int g_val = 2023;
int main()
{
    printf("%d\n", g_val);
    return 0;
}

结论:一个全局变量被static修饰,使得这个全局变量只能在本源文件内使用,不能在其他文件使用。

10.3.3修饰函数
//代码1
#include<stdio.h>
//add.c
int Add(int x, int y)
{
    return x+y;
}
//test.c
extern int Add(int x, int y)
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}
//代码2
#include<stdio.h>
//add.c
static int Add(int x, int y)
{
    return x+y;
}
//test.c
extern static int Add(int x, int y)
int main()
{
    printf("%d\n", Add(2, 3));
    return 0;
}
11#define定义常量和宏(简单了解即可)
#include<stdio.h>
//define定义标识符常量
#define MAX 1000
//define定义宏
#define ADD(x, y) ((x)+(y))
#include <stdio.h>
int main()
{
    int sum = ADD(2, 3);
    printf("sum = %d\n", sum);
    
    sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum);
    
    return 0;
}
12指针

1.内存

内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中进行的 。

所以为了有效的使用内存,就把内存划分成一个个小的内存单元,每个内存单元的大小是 1 个节

为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元地址

//变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是地址的。
//取变量地址如下:
#include<stdio.h>
int main()
{
  int a=10;
  &a;//取出a的地址
  //这里a是4个字节,每个字节都有地址,取出的第一个字节地址(较小的地址)
  printf("%d\n",a)//打印地址,%p是以地址的形式打印
  return 0;
  }
//地址如何存储,需要定义指针变量
int a=10;
int*p;//p为一个整形指针变量
p=&a;

指针的使用实例

#include<stdio.h>
int main()
{
  int a=10;
  int*p=&a;
  *p=20;
  return 0;
}
12.2指针变量的大小
#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
    printf("%d\n", sizeof(char *));
    printf("%d\n", sizeof(short *));
    printf("%d\n", sizeof(int *));
    printf("%d\n", sizeof(double *));
    return 0;
}
13.结构体

结构体是C语言中特别重要的知识点,结构体使得C语言有能力描述复杂类型。比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。这里只能使用结构体来描述了。

struct Stu
{
    char name[20];//名字
    int age;      //年龄
    char sex[5];  //性别
    char id[15]; //学号
};
#include <stdio.h>
struct Stu
{
	char name[20];//名字
	int age; //年龄
	char sex[5]; //性别
	char id[15]; //学号
};
 
int main()
{
	//打印结构体信息
	struct Stu s = { "张三", 20, "男", "20180101" };
	//.为结构成员访问操作符
	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);
	return 0;
}
















标签:main,return,语言,int,sum,初识,printf,include
From: https://blog.51cto.com/u_16180579/7426831

相关文章

  • ⑥初识python--python的字典与集合
    python的字典与集合一、字典的定义与访问1、为什么需要字典思考1:如果有多个数据,例如:'Tom','男',20,如何快速存储?答:列表,元组list1=['Tom','男',20]思考2:如何查找到数据"Tom"?答:查找到下标为0的数据即可。list1[0]思考3:如果将来顺序发生变化,如下所示,还能通过list1[0]访......
  • Java语言的特点,面向对象和面向过程的区别,八种基本数据类型的大小以及封装类
    1、Java语言有哪些特点1、简单易学、有丰富的类库2、面向对象(Java最重要的特性,让程序耦合度更低,内聚性更高3、与平台无关性(JVM是Java跨平台使用的根本)4、可靠安全5、支持多线程2、面向对象和面向过程的区别面向过程是分析解决问题的步骤,然后用函数把这些步骤一步一步地实现,然后......
  • C语言---数据存储
    我们知道一个变量在内存中存储是要开辟一块内存空间来存储的,那么该为这个变量开辟多大的内存空间呢?这个要依据变量的类型,我们知道int类型的变量大小是4个字节,char类型的变量大小是1个字节,创建一个变量时,根据其类型来为变量申请对应大小的空间。问题:那么不同类型的数据在内存中到底......
  • 初识Lua
        ......
  • 初识Caddeine
         ......
  • C++编程语言在线学习系统-计算机毕业设计源码+LW文档
    摘要随着互联网技术的推进,我国高等教育逐渐实现信息化。许多精品C++编程语言在线学习系统的开发建设大大提高了教职工的教学效率,也为培养更多的高素质人才提供了途径。但是C++编程语言在线学习系统的发展也存在交互性不强、资源更新缓慢、教学形式单一等问题。因此,笔者设想开发一......
  • Vrabche-一种Sysy语言编译器
    Vrabche-一种不是很完善的Sysy语言编译器g**l**©2023版权所有https://github.com/GammaMilk/Vrabche简介大赛要求各参赛队综合运用各种知识(包括但不局限于编译技术、操作系统、计算机体系结构等),构思并实现一个综合性的编译系统,以展示面向特定目标平台的编译器构造与编......
  • 系统入门C语言的寄存器
    你好,我是悦创。本篇为C语言一对一辅导笔记节选,我们来系统地了解C语言中与寄存器相关的内容。1.什么是寄存器?寄存器是位于CPU内部的小型、高速的存储单元,它们的访问速度远高于主内存。在执行程序时,常用的数据和指令经常被加载到这些寄存器中,以加速程序的运行。2.register关键字在......
  • C语言求1000以内所有的水仙花数
    求1000以内所有的水仙花数何为水仙花数一个3位整数的各位数字的立方之和等于这个整数,称之为“水仙花数”。例如:153是水仙花数,因为153=1*1*1+5*5*5+3*3*3。先看代码#include<stdio.h>#include<math.h>intmain(){inti,a,b,c,d;for(i=100;i<1000;i++)......
  • C语言:数据类型之整形(一)
     什么是数据?记录一天各个时间的温度,那么这个温度就是数据.记录一个水库水位的变化值,那么这个值就是数据.什么是数据类型?1215是整数12.23是小数"helloworld"是一段话基本数据类型:数值类型:整形,浮点型。整形顾名思义就是整数,像:1,2,3,4,5就是整形整形在C语言的关键字是:int......