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<stdio.h>
#include<stdlib.h>
#include<time.h>
#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;
}