• Linux下的C语言基础-2



    控制语句:
      条件判断:if、if else
      循环语句:while
      转向语句:break :跳出所有循环 执行循环后边的语句
      continune:结束当前循环,不执行continune 后的语句。继续下一次循环

    1.switch 开关语句
      简化if语句的多层嵌套

    2.for 循环语句
      for(表达式1;表达式2;表达式3)
      语句;
        表达式1:循环变量赋初值,for(int a = 0;xxxx;xxxx;)
        表达式2:循环条件,一般为关系表达式,或逻辑表达式
        表达式3:修改循环变量的值,一般为赋值语句


    3.数组:有一定顺序关系的相同数据类型的变量集合
      数组属于构造类型
      数组元素可以是基本数据类型或构造类型
      数组可分为数值数组、字符数组、指针数组、结构体数组等

    C语言中使用数组前必须先定义

    <存储类型><数据类型><数组名>[<常量表达式>];
    存储类型:auto register static extern
    数据类型:数组元素的数据类型
    数组名:数组标识符
    常量表达式:数组元素的个数或数组的长度

    数组初始化:
      全部初始化---> int a[5] = {1,2,3,4,5};
      部分初始化---> int a[10] = {1,2,3,4,5};其余的元素自动赋值为0
      数组全部赋值---> int a[] = {1,2,3,4,5};全部赋值是可以省略下标常量的
      编译器根据初始化列表统计我们的数组元素个数
      数组全部初始化为0---> int a[10]={0};

    数组内存的分配:
      数组分配的是连续空间,根据单个元素所占空间进行分配
      数组下标是从0开始的 如数组的常量表达式为n 则最后一个元素下标为 n-1
      访问数组元素时不允许超出数组下标范围 很危险 访问越界

    #include <stdio.h>

    int main(int argc, const char *argv[])
    {
    int a[10]={1,2,3,4,5,6,7,8,9,10};

    int *p = a;

    for(int i=0;i<10;i++){

    printf("%d :%p ",a[i],p++);

    }
    return 0;
    }

    练习:冒泡排序:

    #include <stdio.h>

    int main(int argc, const char *argv[])
    {
    int a[10]={99,22,33,55,77,11,66,44,88,111};

    int i,j;

    for(i=0;i<10;i++){
    for(j=0;j<9-i;j++){

    if(a[j]<a[j+1]){

    int t = a[j];
    a[j] = a[j+1];
    a[j+1] = t;
    }

    }

    }

    for(i=0;i<10;i++){

    printf("%d ",a[i]);

    }
    return 0;
    }


    4.字符串
      字符串是以‘’结尾的一串字符
      C语言中没有专门的字符串变量

    通常我们是用字符数组存放字符串,因此字符数组存放字符串也要把‘’放到数组中
    且作为结尾标志

    char c[]={'h','e','l','l','o',''};
    char c[]={"hello"};
    char c[]="hello";
    用字符串要比用字符逐个赋值多占一个字节,用来存放‘’;
    ‘’是由编译器自动加上去的

    char *s = "hello";
    练习:求 指向字符串的 指针所占字节长度

    字符串处理函数
    考贝:#include <string.h>
    char *strcpy(char *dest, const char *src);
    功能:将src的字符串拷贝到dest里边
    参数:src源字符串的起始地址,dest是目标起始地址
    返回值:目标字符串的起始地址
    注:‘’也会被拷贝

    #include <stdio.h>
    #include <string.h>

    #define LEN 128

    int main(int argc, const char *argv[])
    {
    char c[]="hello";
    char s[LEN];

    char *s1=NULL;

    s1=strcpy(s,c);

    printf("%s ",s);
    printf("s=%p s1=%p ",s,s1);
    return 0;
    }


    比较:int strcmp(const char *s1, const char *s2);
    功能:按照ASCII码顺序比较s1、s2字符串
    参数: s1和s2都是字符串的起始地址
    返回值:s1 = s2 返回 ==0
    s1 > s2 返回 >0
    s1 < s2 返回 <0

    #include <stdio.h>
    #include <string.h>

    int main(int argc, const char *argv[])
    {
    char *s = "hello";
    char *s1 = "hello world";

    int ret = strcmp(s1,s);

    printf("ret = %d ",ret);

    if(ret == 0){

    printf("s1==s2 ");

    }


    return 0;
    }

    求长:size_t strlen(const char *s);
    功能:求字符串长度 不含‘’
    参数: s 是字符串起始地址
    返回值: 字符串长度

    #include <stdio.h>
    #include <string.h>


    int main(int argc, const char *argv[])
    {
    char *s="hello world";

    int ret = strlen(s);
    printf("ret = %d ",ret);
    return 0;
    }


    5.指针
      指针是一个变量,表示普通变量的地址,指针的内存字节宽度视操作系统而定。
      32位操作系统4字节
      64位操作系统8字节

      int a;
      int *p = &a;
      *p==a
      p==&a
      &为普通变量取地址符,
      *为指针变量存储的地址数据所存储的值

      指针的定义:
      类型说明 * 变量名
      int *p;只能指向int类型的普通变量地址
      char *s;只能指向char类型的普通变量地址

    指针赋值:
    指针使用前不仅要定义说明,而且要赋予具体的值
    未经赋值的指针不能随便使用;

      int i;
      int *p;
      p = &i;
      ********
      int i,*p;
      p=&i;
      ********
      int i ,*p=&i;

      指针常量:
      指向一块区域,这块区域可读可写,但是指针初始化后不能改变
      char *const p;


      常量指针:
      指向一块区域,这块区域只可读不可写。
      const char *p;


      野指针:
      int *a;
      *a = 52;
      a是随机指向一个内存单元,这样的指针称为野指针。使用是不合法的
      指针在间接使用之前一定要确保已经指向一个合法的对象







    6.函数
    7.结构体

  • 相关阅读:
    C++多态的实现原理
    C++编程之面向对象的三个基本特征
    C/C++中static关键字详解
    C/C++中static关键字作用总结
    Linux防CC攻击脚本
    linux下防火墙iptables原理及使用
    linux下使用 TC 对服务器进行流量控制
    awr报告与statspack报告
    awr报告
    statspack报告
  • 原文地址:https://www.cnblogs.com/Halo-zyh-Go/p/12615269.html
Copyright © 2020-2023  润新知