初识C语言

简介: 初识C语言

一、数据类型



char 字符数据类型 1byte
short  短整型 2byte
int 整形 4byte
long 长整型 4byte
longlong 长长整形 8byte
float 单精度浮点数 4byte
double 双精度浮点数 8byte


二、变量常量

1.变量

变量分为局部变量和全局变量


include <stdio.h>
int global = 2019;//全局变量
int main()
{
    int local = 2018;//局部变量
    //下面定义的global会不会有问题?
    int global = 2020;//局部变量
    printf("global = %d\n", global);
    return 0;
}//没有问题,当局部变量与全局变量重名时,局部变量优先使用


变量有作用域和生命周期

①作用域

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

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


②生命周期

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

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


2.常量

#include <stdio.h>
//举例
enum Sex
{
 MALE,
 FEMALE,
 SECRET
};
    //括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
                            //字面常量演示
    3.14;                   //字面常量
    1000;                   //字面常量
    //const 修饰的常变量
    const float pai = 3.14f;   //这里的pai是const修饰的常变量
    pai = 5.14;//是不能直接修改的!! !
    //#define的标识符常量 演示
 #define MAX 100
    printf("max = %d\n", MAX);
    //枚举常量演示
    printf("%d\n", MALE);
    printf("%d\n", FEMALE);
    printf("%d\n", SECRET);
                            //注:枚举常量的默认是从0开始,依次向下递增1的
    return0;
}


①字面常量

②const 修饰的常变量

③#define 定义的标识符常量

④枚举常量

三、字符串和转义字符

#include <stdio.h>
//下面代码,打印结果是什么?为什么?(突出'\0'的重要性)
int main()
{
    char arr1[] = "bit";                    \\这种由双引号引起来的就叫字符串
    char arr2[] = {'b', 'i', 't'};          \\这个单引号引起来的叫字符
    char arr3[] = {'b', 'i', 't', '\0'};   
                               \\“\0”是字符串的结束标志,定义字符串时默认后面加上了字符串
    printf("%s\n", arr1);
    printf("%s\n", arr2);
    printf("%s\n", arr3);
    return 0;
}
常见转义字符
\? 在书写连续多个问号时使用,防止他们被解析成三字母词
\' 用于表示字符常量 '
\" 用于表示一个字符串内部的 "
\\ 用于表示一个反斜杠,防止它被解释为一个转义序列符
\a 警告字符,蜂鸣
\b 退格符
\f 进纸符
\n  换行符
\r  回车
\t 水平制表符
\v  垂直制表符
\ddd ddd表示1~3个八进制的数字。 如: \130 X
\dd dd表示2个十六进制数字。 如: \x30 0



例题:

//程序输出什么?
#include <stdio.h>
int main()
{
    printf("%d\n", strlen("abcdef"));
    // \62被解析成一个转义字符
    printf("%d\n", strlen("c:\test\628\test.c"));
    return 0;
}

四、选择语句

1.if语句

if;else if;else;

&&与     ||或

表达式1?表达式2:表达式3


(如果表达式1成立则输出表达式2,如果表达式1不成立则输出表达式3)

例:

1. \\比较大小,输出较大值
2. a>b?printf("%d”,a):printf("%d",b);


2.switch语句

#include<stdio.h>
int main()
{
  int a;
  scanf("%d",&a);
  switch(a)
  {
  case 1:printf("男\n");break;
  case 2:printf("女\n");break;
  case 3:printf("未知\n");break;
  default:printf("输入不合法\n");//输入值上面均不存在
  }
  return 0;
}


五.循环语句

1.for循环

//输出a个*
#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    for(int i=1;i<=a;i++)//循环的次数为a
        {
            printf("*");//每次输出一个*
        }
    return 0;
}


1、break,结束当前循环结构的循环

2、continue,只结束满足条件的循环,后续循环继续执行

2.while循环


while循环内容: 若表达式为真则执行循环体的内容;若表达式为假则结束循环;先判断再执行循环体

while(表达式)

{

  循环体;

}

//输出十个*
#include<stdio.h>
int main()
{
    int a=1;
    while(a<=10)
    {
        printf("*");
        a++;
    }
    return 0;
}


3.do-while循环

先循环一次循环体,然后求解表达式,若表达式为真,则继续执行do while语句中循环体,否则执行循环体的下一步;先执行循环体,再判断

do

{

循环体;

}while(表达式);


//输出十次*
#include<stdio.h>
int main()
{
    int a=1;
    do
    {
        printf("*");
        a++
    }while(a<=9);    //注意这里需要用到分号 ; 
    return 0;
}

五、函数

主要就是可以把代码简化,并且重复使用

include <stdio.h>
int main()
{
    int num1 = 0;
   int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0;
}
//上述代码,写成函数如下:
#include <stdio.h>
int Add(int x, int y)//这里就相当于定义了一个名为ADD的函数
{
   int z = x+y;
   return z;
}
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    printf("输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = Add(num1, num2);    //这里使用了这个ADD函数
    printf("sum = %d\n", sum);
    return 0;
}



六、数组

1.数组的下标

C语言规定:数组的每个元素都有一个下标,下标是从0开始的。

                   数组可以通过下标来访问的。


194be023060a48a88eea7f4c33a01b0f.png


2.数组的使用

#include <stdio.h>
int main()
{
 int i = 0;
 int arr[10] = {1,2,3,4,5,6,7,8,9,10};
 for(i=0; i<10; i++)        //循环依次输出1-10
 {
       printf("%d ", arr[i]);
 }
 printf("\n");
    return 0;
}

例题:班级成绩输入输出_牛客题霸_牛客网 (nowcoder.com)

七、操作符

①算数操作符

+ - * / %


②移位操作符

>>   <<

③位操作符

& ^ |

④赋值操作符

=  +=  -=  *=  /=  &=  ^=  |=  >>=  <<=

⑤单目操作符


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


⑥关系操作符

>  >=  <  <=  !=  ==

⑦逻辑操作符

1. &&     逻辑与
2. ||     逻辑或


⑧条件操作符

1. xp1 ? exp2 : exp3
2. //具体可以看上面选择语句



⑨逗号表达式

xp1, 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

①typedef

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

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

②关键字static

在C语言中: static是用来修饰变量和函数的

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

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

3. 修饰函数-称为静态函数

九、define定义常量和宏

//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);    //输出5
    sum = 10*ADD(2, 3);
    printf("sum = %d\n", sum);    //输出50
    return 0;
}


十、指针


1141c2669f2d4daf88b3366c77e33b4e.png


注意:32位处理器一个指针的大小为4byte

          64位处理器一个指针的大小为8byte  

十一、结构体

结构体可以存储若干个信息,使得c语言可以描述复杂类型

比如描述学生,学生包含: 名字+年龄+性别+学号 这几项信息。

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


//打印结构体信息
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);


相关文章
|
3月前
|
C语言
C语言练习5
C语言练习5。
23 2
|
11月前
|
C语言
C语言练习
C语言练习。
60 1
|
3月前
|
Java Unix 程序员
初识C语言(一)
初识C语言(一)
|
3月前
|
存储 C语言
初识C语言(二)
初识C语言(二)
C4.
|
3月前
|
存储 算法 安全
C语言的算法结构
C语言的算法结构
C4.
45 0
|
9月前
|
C语言 C++
初识C语言(2)上
初识C语言(2)
48 0
|
10月前
|
C语言
C语言的部分杂碎知识
C语言的部分杂碎知识
|
10月前
|
存储 Go C语言
|
11月前
|
C语言
C语言课前准备
C语言课前准备
29 0
|
存储 Java Unix
初识C语言(1)
初识C语言(1)
55 0