学习记录第十三天

迭代器

void printArray(int *begin,int *end)
{
    while(begin <= end)
    {
        printf("%d,",*begin);
        ++begin;
    }
    printf("\b \n");
}

快速排序算法

void qSort(int *begin,int *end)
{
    if(begin >= end)
    {
        return;
    }
    int t = *begin;
    int *p = begin;
    int *q = end;

    while(p < q)
    {
        while(p < q&&*q >= t)
        {
            --q;
        }
        while(p < q&&*p <= t)
        {
            ++p;
        }
        swap(p,q);
    }
    swap(begin,p);
    qSort(begin,p - 1);
    qSort(p + 1,end);
}

字符型指针

 字符型指针在C语言中是一种特殊的指针类型,用于存储字符数据的地址。它通常用于处理字符串,因为字符串在C语言中是以字符数组的形式存储的。

字符型指针的声明格式为 char *pointer_name;,其中 pointer_name 是指针变量的名称。

声明和初始化字符型指针

字符型指针可以通过直接初始化来声明,例如:char *str = "hello";这里 str 是一个字符型指针,它指向字符串字面量 "hello" 的首字符。

指针与字符串的关系

字符串字面量在C语言中以空字符 '\0' 结尾,字符型指针指向字符串的起始位置,可以通过指针遍历整个字符串,直到遇到空字符。

指针的算术运算

字符型指针支持算术运算,包括自增(++)和自减(--)操作,以及与其他整数的加减运算。这些运算会影响指针的值,即它所指向的内存地址。指针的使用场景字符型指针广泛用于字符串操作,如复制、连接、比较和搜索。它们也可以用于动态内存管理,通过指针来分配和释放内存空间。

注意事项

指向字符串常量的指针不能修改字符串的内容,因为字符串常量存储在只读的内存段。

在使用指针时,应避免野指针(未初始化或不再有效的指针),以免引起程序崩溃。

指针算术运算时,指针的增量是根据其指向的数据类型决定的,例如 char * 类型的指针每次自增会移动1个字节。

遍历

void Puts(char *s)
{
    while(*s)
    {
        putchar(*s);
        ++s;
    }
    putchar('\n');
}

用递归调用求有效字符 

int Strlen(char *s)
{
    if(*s == 0)
    {
        return 0;
    }
    else
    {
        return Strlen(s + 1) + 1;
    }
}

const关键字有两种形式:

const关键字可以用于修饰局部变量、函数参数、返回值等。在声明时,const修饰的变量必须初始化,否则会导致编译错误。此外,const修饰的变量具有全局性,在使用时需要注意。

const关键字还可以与指针结合使用,形成常量指针(指向常量的指针)或指针常量(指针本身不可变的常量)。常量指针允许指针指向的内容不可变,但指针本身可以改变指向的地址。相反,指针常量的地址不可变,但指针指向的内容可以通过其他途径修改。

void万能指针:不能进行指针运算,主要用于强制类型转换;

动态内存分配

malloc(size):动态分配内存,且一定是连续的;

free(p);释放内存;

realloc(p,size):扩容,缩容;

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值