初识C语言

本文作为C语言初学者的引导,介绍了数据类型、变量和常量、字符串、转义字符、注释、选择与循环语句、函数、数组、操作符、关键字、指针和结构体等基础知识。C语言中,字符串是字符数组,没有专门的String类型。同时,文章探讨了指针的内存概念,以及结构体在描述复杂类型时的作用。

相信大家不管学什么语言,我们学的第一句都是"Hello world"吧!当然C语言的第一句也是"Hello world"

#include <stdio.h>

int main()
{
	printf("Hello world");
}

然后我们开始学习

1.数据类型

char     //字符数据类型

short    //短整型

int     //整形

long     //长整型

long long  //更长的整形

float    //单精度浮点数

double    //双精度浮点数

好了,可能你看到这些数据类型你想问:"C语言有没有字符串类型呢?",那么回答就是:

  •  C语言没有String类型,但是C语言提供了字符串常量
  •  C语言中字符串的概念:以 NULL字节结尾的零个或多个字符,字符串通常储存在字符数组中,当一个字符串常量出现在一个表达式中时,表达式所使用的值就是这些字符所存储的地址,因此可以把字符串常量赋值给一个“指向字符的指针”

那么每种数据类型的大小是多少字节呢?(1字节 = 8bit)

    char			1
    short			2
    int				4
    long			4
    long long		8
    float			4
    double			8

2.变量和常量

比如

  • 我们在生活中经常会遇到一些可变的值:体重,身高......        这就是变量
    • 如何定义变量
      • int age = 12;
        float weight = 45.5f;
        char ch = 'w';

  • 我们在生活中经常会遇到一些不可变的值:身份证号码,血型......      这就是常量
    • 字面常量
      • #include <stdio.h>
        int main()
        {
            1;
            2;
            return 0;
        }

               

const修饰的常变量(它限定一个变量不允许被改变,产生静态作用)

那么为什么说它是变量呢?

因为它还保留着变量的性质

看下列代码:

#include <stdio.h>
int main()
{
    const float pai = 3.14f; 
    pai = 5.14;
    return 0;
}

 当我们编译时会报错:

这就是说明 pai 被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 pai 不能直接被改变,但是 pai 本质上还是一个变量的,所以叫常变量

#define 定义的标识符常量,如 #define MAX 100

它可以放在数组中

#include <stdio.h>
#define MAX 100
int main()
{
	int arr[MAX] = { 0 };
	printf("max = %d", MAX);
	return 0;
}

枚举常量

  • {}中枚举常量是不可更改。
    • enum Color{
      	RED,
      	YELLOW,
      	BLUE
      };

  • 通过枚举类型所创建出来的变量是可更改的
    • enum Color color = BLUE;
      color = YELLOW;

        

3.字符串

"hello bit.n"

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

注:

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

4.转义字符

转义字符释义
\?在书写连续多个问号时使用,防止他们被解析成三字母词
\'用于表示字符常量'
\''用于表示一个字符串内部的双引号
\\用于表示一个反斜杠,防止它被解释为一个转义序列符
\a警告字符,蜂鸣
\b退格符
\f进纸符
\n换行
\r回车
\t水平制表符
\v垂直制表符
\dddddd表示1~3个八进制的数字。 如: 130 X
\xdddd表示2个十六进制数字。 如: x30 0

4.注释

代码中有不需要的代码可以直接删除,也可以注释掉

代码中有些代码比较难懂,可以加一下注释文字

注释有两种风格:

  • C语言风格的注释 /xxxxxx/

    • 缺陷:不能嵌套注释

  • C++风格的注释 //xxxxxxxx

    • 可以注释一行也可以注释多行

5.选择语句

#include <stdio.h>
int main()
{
    int coding = 0;
    printf("你会去敲代码吗?(选择1 or 0):>");
    scanf("%d", &coding);
    if(coding == 1)
   {
       prinf("坚持,你会有好offern");
   }
    else
   {
       printf("放弃,回家卖红薯n");
   }
    return 0; 
}

6.循环语句

  • while语句
  • for语句
  • do ... while语句

7.函数

函数的特点就是简化代码,代码复用。

#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 = %dn", 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("%d %d", &num1, &num2);
    sum = Add(num1, num2);
    printf("sum = %dn", sum);
    return 0; 
}

8.数组

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

数组如何定义的:

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

数组的下标是如何表示的:

int arr[10] = {0};
//如果数组10个元素,下标的范围是0-9

 数组是如何使用的:

#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++)
 {
       printf("%d ", arr[i]);
 }
 printf("n");
    return 0; 
}

9.操作符

  • 算术操作符
    • + - * / %

  • 移位操作符
    • >> <<

  • 位操作符
    • & ^ |

  • 赋值操作符
    • = += -= *= /= &= ^=  |=    >>=   <<=

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

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

  • 逻辑操作符
    • &&     逻辑与
      ||          逻辑或

  • 条件操作符
    • exp1 ? exp2 : exp3

  • 逗号操作符
    • exp1, exp2, exp3, …expN

  • 下标引用,函数调用和结构成员
  • [] () . ->

10.常见关键字

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

11.指针

内存

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

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

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

变量是创建内存中的(在内存中分配空间的),每个内存单元都有地址,所以变量也是有地址的。

取出变量地址如下:

#include <stdio.h>
int main()
{
 int num = 10;
 &num;//取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
 printf("%pn", &num);//打印地址,%p是以地址的形式打印
 return 0; 
}

 

那地址如何存储,需要定义指针变量。

int num = 10;
int *p;//p为一个整形指针变量
p = &num;

 指针的使用实例:

#include <stdio.h>
int main()
{
 int num = 10;
 int *p = &num;
 *p = 20;
    return 0;
}

指针变量的大小

#include <stdio.h>
//指针变量的大小取决于地址的大小
//32位平台下地址是32个bit位(即4个字节)
//64位平台下地址是64个bit位(即8个字节)
int main()
{
    printf("%dn", sizeof(char *));
    printf("%dn", sizeof(short *));
    printf("%dn", sizeof(int *));
    printf("%dn", sizeof(double *));
    return 0; 
}

那么我们得出的结论为:

指针大小在32位平台是4个字节,64位平台是8个字节。

12.结构体

结构体是C语言中特别重要的知识点,结构体使得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 = %sn", s.name, s.age, s.sex, s.id);
//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %sn", ps->name, ps->age, ps->sex, ps- >id);

欧克,这就是我们学习到C语言的全部内容,详细内容我会加油后续学习的!你们也要努力学习!

如有错误敢情大神指出,谢谢!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值