2019-07-28 从零开始学c语言(1)

1、字符串操作函数
int main()
{
    
}
2、内存操作函数

memset
memcmp
memcpy
memmove

int main()
{
    int arr[10]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    memset(arr, 0, 40);  // 将arr中前40个字节的数初始化为0
    memcpy(&arr[2], arr, 20);  // 将arr[2]以后的20个字节替换为arr中的前20个字节的数
    // 与strcpy的不同
    // 1、函数参数不同
    // 2、strcpy拷贝字符串,memcpy拷贝内存二进制数
    //    原码、反码、补码:
    //    正数的原码反码补码相同
    //    负数的反码,符号位不变,其余位按位取反
    //    负数的补码,负数的反码末位加1
    //    内存中存储的是数据的补码
    // 3、strcpy\0为结束标志位,memcpy以字节数为结束标志位
    // 当拷贝位置重叠时,有可能会报错    
    memmove(&arr[2], arr, 20);  // 将arr[2]以后的20个字节替换为arr中的前20个字节的数
    int arr1 = {1, 2, 3, 4, 5};
    int val = memcmp(arr, arr1, 20);  // 比较arr的前20个字节的数据和arr1的前20个字节的数据是大还是小,0表示相同,1,表示大,-1表示小
}

3、数据存储范围
内存四区模型
4、堆空间冒泡排序
#define _CRT_SECURE_NO_WARNINGS
#include
#include
#include

#define MAX 10

int main()
{
    srand((unsigned int)time(NULL));
    int *p = (int *)malloc(sizeof(int) * MAX);
    for (int i = 0;i < MAX; i++)
    {
        p[i] = rand % 10;
    }
    for (int i = 0; i < MAX - 1; i++)
    {
        for(int j = 0; j < MAX -I -1;j++)
        {
            if (p[j] > p[j+1])
            {
                int temp = p[j];
                p[j] = p[j+1];
                p[j+1] = temp;
            }
        }
    }
    for (int i = 0; i < MAX; i++)
    {
    printf("%d\n", p[i]);
    }
    free(p);
    return 0;
}

你可能感兴趣的:(2019-07-28 从零开始学c语言(1))