内存管理 万能指针 宏替换与typedef 结构体 共用体

本文探讨了C语言中的内存管理,包括memset, memcpy, memcmp等函数的使用,以及动态内存分配的重点——malloc和free函数。同时,文章介绍了万能指针的概念,并详细讲解了结构体的使用,如位域、嵌套结构体和指针自我嵌套。此外,还讨论了共用体和枚举等数据类型。" 104004354,9190291,matplotlib数据可视化详解:从Numpy到复杂图表,"['数据科学', '可视化', 'Python', 'numpy', 'matplotlib']
摘要由CSDN通过智能技术生成

内存管理

memset,memcpy,memcmp函数

//memset,memcpy,memcmp
#include <stdio.h>
/*****************************
#include <string.h>
void *memset(void *s, int c, size_t n); //通常情况用处清0
功能:将s的内存区域的前n个字节以参数c填入
参数:
	s:需要操作内存s的首地址
	c:填充的字符,c虽然参数为int,但必须是unsigned char , 范围为0~255
	n:指定需要设置的大小
返回值:s的首地址
 * ****************************/
#include <string.h>
#if 0   //memset
int main()
{
   
    char num[10];
    short num_int[10];    //int = 4字节
    memset(num_int,0,sizeof(num_int));
    memset(num,1,10);   //-128 - 127
    for(int i = 0; i < 10; i++)
    {
   
        printf("%d\n",num_int[i]);
    }

    return 0;
}
#endif
/**********************************
#include <string.h>
void *memcpy(void *dest, const void *src, size_t n);
功能:拷贝src所指的内存内容的前n个字节到dest所值的内存地址上。
参数:
	dest:目的内存首地址
	src:源内存首地址,注意:dest和src所指的内存空间不可重叠,可能会导致程序报错
	n:需要拷贝的字节数
返回值:dest的首地址
 * ****************************/
#if 0
int main()
{
   
    int num_char1[10] = {
   1,2,3,4,5,6,7};
    int num_char2[10];
    memcpy(num_char2,num_char1,40);
    for(int i = 0; i < 10; i++)
    {
   
        printf("%d\n",num_char2[i]);
    }
    return 0;
}
#endif
/**********************************
#include <string.h>
int memcmp(const void *s1, const void *s2, size_t n);
功能:比较s1和s2所指向内存区域的前n个字节
参数:
	s1:内存首地址1
	s2:内存首地址2
	n:需比较的前n个字节
返回值:
	相等:=0
	大于:>0
	小于:<0
 * ****************************/
int main()
{
   
    int num_char1[10] = {
   1,2,3,4,5,6,7};
    int num_char2[10] = {
   1,2,3,3,5,6,7};
    //memcpy(num_char2,num_char1,40);   
    if(memcmp(num_char1,num_char2,12) == 0)
    {
   
        printf("相等\n");
    }
    else
    {
   
        printf("不相等\n");
    }
    printf("%x\t%x\n",num_char1[3],num_char2[3]);
    return 0;
}

万能指针

#include <stdio.h>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值