• Linux C语言进阶


    一、二维数组的定义和存储

    一、二维数组的定义

    1、二维数组的应用:图、方阵

    2、数组元素的存放顺序:内存是一维的,二维数组:按行优先

    a[1]:表示第一行,也表示a[1][]的所有元素

    二、二维数组的初始化、遍历

    1、元素的初始化

    1、不是按顺序存放,部分初始化

     2、按顺序存放

    3、二维数组只能省略行,不能省略列

    1、打印杨辉三角

     2、打印数组中的最大值,行,列

    三、多维数组

    二、字符数组和字符串

    一、一维字符数组和字符串

    1、字符数组的用法

    1)“abc”='a''b''c''\0'

    2)逐个字符赋值

     

    3)0=\0=NULL

    2、字符串的用法

    4)以字符串的形式赋值

    5)用%s打印数组中存放的字符串

    这种情况只适合打印以\0结尾的字符串,单个字符赋值有可能出现错误

    二、二维字符数组和字符串

    1、在赋值的时候,列赋值比要用的大一些,所有的输入都可以用字符串来表示(留出\0的位置,简化输入)

    字符串存储-------二维数组!!!

    2、打印

    1)打印字符串

    2)用最原始的数组的形式

    3、逆序输出字符串

    1)字符串不变,逆序输出

    2)字符串倒叙

    4)gets和scanf的区别

    gets可以取空格,scanf不可以

    三、字符串处理函数(一)

    man+函数名:查看函数手册

    一、strlen函数(只数有效字符,不含\0)

    二、strcpy函数--字符串拷贝函数

    拷贝源码:

    三、strcat函数---字符串连接函数

    拷贝加连接

    四、strcmp-----字符串比较函数

    从左到右逐个字符,直到不同字符。

    如果完全相同,字符串较短的比较小。

    四、字符串处理函数(二)

    man isalpha:

    一、strncpy---复制指定长度的字符串

    二、strncat---附加指定长度字符串

    三、strncmp---只比较前几个字母

    四、strncasecmp---忽略大小写比较字符串的大小

    五、strchr---在字符串中查找指定字符,返回第一次出现的地址

    strrchr---在字符串中查找指定字符,返回最后一次出现的地址

     

    六、strstr---查找字符串

    printf("%d",strstr(s1,s2)-s1);

    //显示查找的字符串首字符的位次

    在命令行界面也可以查找字符串

    七、

    八、toupper---小写转大写

    tolower---大写转小写

    五、指针的基本用法

    一、地址和变量

    1、bit:一位二进制

    byte:一个字节=8bit

    2、什么是指针?

    内存的地址是指针

    什么是指针变量?

    存放地址的变量称为指针变量

    3、指针变量的声明

    4、变量的初始化

    5、一个8位的16进制数是多少字节?

    一位16进制对应的是4位二进制数,8个16进制对应4个8bit,所以对应4字节。

    6、指针的目标:指针指向的内存区域中的数据成为指针的目标。

    如果指针指向一个变量的内存空间,这个变量称为指针的目标变量。简称为指针的目标。

    7、取目标地址的内容*px=*(&x)=x

    8、

    9、指针赋值

    1)把变量地址赋值给指针

    2)指针变量之间互相赋值

    3)把数组地址赋给指针变量

    10、

    sizeof(p):存储指针变量p所占的内存

    11、指针占几个字节

    六、指针的运算

    1、指针运算实际上就是地址运算,只能进行赋值运算、算数运算和关系运算

    2、地址加一,表示的是这个数据类型的地址变量的地址加1,因此不同数据类型的地址变量相加减是没有意义的。

    3、相同类型的指针相减:px-py表示的也是中间间隔的数据个数。

    扭曲的式子:初学时指针类型和目标变量的数据类型严格保持一致。

    二、指针的关系运算

    1、指针的关系运算表示他们指向地址之间的关系

    2、指针与整数变量之间的关系运算没有意义。

    3、指针与0进行关系运算,判断指针是否为空。

    七、指针与数组

    1、指针与一维数组

    2、x[i],*(p+i),*(x+i),p[i]表示的值相同

    x+i:数组名+i

    但是x++是错误的

    例子:用指针完成数组倒置

    3、区别x[1]和p[1]

    八、指针与二维数组

    一、一级指针便利二维数组

    二维数组:

    *(p+1):移动一个数据

    *(a+1):移动一行

    二、指针与二维数组

    1、二维数组名常被用做行地址

    三、行指针

    1、行指针又称数组指针,存储行地址的指针

    2、行指针的声明

    可以理解为指针的步长是一行

    int (*p)[列]

    p=a

    p[1][1]=a[1][1]

    九、字符指针与字符串

    一、字符指针与字符串上

    1、字符指针是把字符串的首地址赋给指针

    2、赋值方式

    1)先定义字符串,指针指向字符串数组的首地址

    2)用指针直接去定义字符串

    此时字符串相当于一个全局变量,不能再用指针修改字符串的值

    3)实现字符串链接函数

    十、指针数组

    一、指针数组的概念和用法

    1、指针数组

    2、指针数组的初始化

    二、用一维指针数组访问二维数组

    三、指针数组的应用-处理二维数组

    二级指针

    十一、多级指针、void指针以及const

    多级指针、void指针以及const

    1、

    三、多级指针和指针数组

    1、示例

    2、多级指针

    二级指针可以管理一级指针数组

    四、void指针的使用

    1、void指针的初始化

    void *p;

    2、void指针不确定数据类型,可以通过强制类型转换让变量指向任何数据类型的变量,在强制转换之前,不能进行任何指针的算数运算

    赋值时可以不转换,但使用时(打印)必须转换

    3、用void指针遍历一维数组

    五、const变量、const指针

    1、const变量,常量化变量,变量的值不能被修改了

    1)const int *p

    2)int const *p

    3)const int *const *p

    只能const int *const p=&a;

    六、main函数是否可以带参数(涉及到const指针)

    注意事项

    常用命令

    1、man isalpha

    2、EOF

    1)end of file,即文件结束符,EOF的值是-1。在文本文件中才能使用EOF作为结束符。

    2)在使用scanf输入时,如果输入的数据正确,则scanf返回一个正整数,如果输入的是组合键,则表示返回EOF,即-1。

    3、Null相当于一个宏定义

    #define NULL 0

    4、C语言中,只有全局变量、static是放在静态区的,只有在程序结束的时候才释放内存,指针放在栈当中

    5、

  • 相关阅读:
    创建vue3项目
    [Gcexcel]GrapeCity Documents Excel for Java 5.2.2
    基于javaweb+mysql数据库实现的宠物领养|流浪猫狗网站项目源代码
    if 语句 python
    leetcode 55.跳跃游戏 贪心
    738. 单调递增的数字
    MySQL的UPDATE及SELECT...FOR UPDATE语句关于锁的一些简单验证
    23种设计模式——单例模式
    蔚来杯2022牛客暑期多校训练营4
    # ruby安装设置笔记
  • 原文地址:https://blog.csdn.net/m0_57508000/article/details/134075448