memset 还可以这样用

本文介绍了一种使用memset函数局部初始化数组的方法,通过一个C++示例展示了如何仅初始化数组的一部分元素,而非整个数组,这在某些场景下可以提供更灵活的内存管理。

我们经常将memset用在初始化中,其实还可以这样方便的使用它;

给数组中的一部分初始化;

看例子:

#include<iostream>
#include<string.h>
using namespace std ;
int main()	{
	int a[21] = {0} ;
	memset(a+4,-1,5*sizeof(a[0])) ;
	for(int i = 0 ; i < 20 ; i++)
		cout << a[i] << ' ' ;
	cout << endl ;
	return 0 ;
}

  输出结果为;

0 0 0 0 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0

转载于:https://www.cnblogs.com/NYNU-ACM/p/4237421.html

可以使用 `memset` 函数对 `TCP_CONNECTION_T` 进行初始化。`memset` 函数的作用是将一块内存区域的每个字节都设置为指定的值,通常用于将结构体初始化为零值。 以下是使用 `memset` 函数初始化 `TCP_CONNECTION_T` 的示例代码: ```c #include <stdbool.h> #include <stdint.h> #include <string.h> #define DOMAIN_NAME_MAX_SIZE 256 #define CA_PATH_SIZE 256 #define DOMAIN_IP_STRLEN 16 typedef struct _NODE { // 假设 NODE 结构体的定义 int dummy; } NODE; typedef void (*connect_success_cb)(void); typedef void (*connect_fail_cb)(void); typedef void (*recv_data_cb)(void); typedef struct _TCP_CONNECTION_S { NODE node; uint8_t domain[DOMAIN_NAME_MAX_SIZE]; uint8_t ca_path[CA_PATH_SIZE]; bool use_ssl; uint32_t ip; int port; int32_t sock; int32_t sock_index; int32_t timer_index; int tcp_timeout; int ssl_timeout; void * ssl; void * tpssl; int connect_status; int close_wait_keep; int error_type; int ssl_error; int skip_date_check; connect_success_cb connect_success_handle; connect_fail_cb connect_fail_handle; recv_data_cb recv_data_handle; void * param; char domain_ip[DOMAIN_IP_STRLEN + 1]; char dns_resolve_ip[DOMAIN_IP_STRLEN + 1]; bool use_cert_list; } TCP_CONNECTION_T; int main() { TCP_CONNECTION_T rtspsc_connection; memset(&rtspsc_connection, 0, sizeof(TCP_CONNECTION_T)); return 0; } ``` 使用 `memset` 初始化的优点是代码简洁,能快速将结构体的所有字节置为零。但需要注意的是,如果结构体中有函数指针成员,使用 `memset` 会将其置为 `NULL`,这在某些情况下可能是合适的,但如果后续需要使用这些函数指针,就需要手动重新赋值。另外,如果结构体中有非零的默认值需求,`memset` 就不适用,需要采用其他初始化方式。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值