c++ 尽量不要用memset去对类的实例清0

#include "iostream"
#include "memory.h"
using namespace std;

class A
{
  public:
    std::string tostring()
    {
        std::string buf;
        buf.append(std::to_string(major))
            .append(" ")
            .append(std::to_string(cmd));
        return buf;
    }

  protected:
    short major = 7;
    int cmd = 79;
};


template<int MAX_SIZE, typename T>
class B {
public:
    std::string tostring()
    {
        std::string buf;
        for (int i = 0; i < end(mbuf)-begin(mbuf); i++){
            buf.append(std::to_string(mbuf[i])).append(" ");
        }

        buf.append(std::to_string(m_len));
        return buf;
    }
    
    char mbuf[MAX_SIZE];
    int  m_len;
};

class C : public A{
public:
    static const unsigned short MAJOR = 7;
    static const unsigned short MAINOR = 66;
    static const unsigned short CMD = 819;

    std::string tostring()
    {
        std::cout &
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: C语言是一种强大而灵活的编程语言,可以用来实现各种功能。在这里,假设我们想要创建一个实现UDP通信的实例。 首先,我们需要引入C语言的标准库中的头文件`<stdio.h>`和`<stdlib.h>`,以便进行输入输出和内存分配。 接下来,我们定义一个UDP,其中包含了UDP通信所需的各种属性和方法。首先,我们需要定义一个套接字(socket)以进行通信。使用C语言的网络编程库`<sys/socket.h>`,我们可以调用`socket()`函数来创建一个套接字,并指定协议族为IPv4和传输型为UDP。 然后,我们需要定义一些基本信息,例如本地主机的IP地址和端口号,以及远程主机的IP地址和端口号。 在的方法中,我们可以定义发送和接收数据的函数。发送函数的主要功能是将数据发送到指定的远程主机和端口上。接收函数则负责从本地套接字接收来自远程主机的数据,并将其打印出来。在这里,我们可以使用`sendto()`和`recvfrom()`函数来进行数据的发送和接收。 最后,在主函数中,我们可以创建该UDP实例,并使用该的方法来发送和接收数据。 总结起来,通过使用C语言的标准库和网络编程库,我们可以创建一个UDP实例,并使用该实例的方法来实现UDP通信。这样就可以在C语言中编写代码,实现UDP通信的功能。 ### 回答2: C语言中实现UDP的示例代码如下: ```c #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> #define BUFFER_SIZE 1024 typedef struct { int socket_fd; struct sockaddr_in server_addr; } UDP; void udp_init(UDP *udp, const char *server_ip, int server_port) { udp->socket_fd = socket(AF_INET, SOCK_DGRAM, 0); if (udp->socket_fd == -1) { perror("socket creation failed"); exit(1); } memset(&(udp->server_addr), 0, sizeof(udp->server_addr)); udp->server_addr.sin_family = AF_INET; udp->server_addr.sin_addr.s_addr = inet_addr(server_ip); udp->server_addr.sin_port = htons(server_port); } void udp_send(UDP *udp, const char *message) { int n = sendto(udp->socket_fd, message, strlen(message), 0, (const struct sockaddr *)&(udp->server_addr), sizeof(udp->server_addr)); if (n == -1) { perror("sendto failed"); exit(1); } } void udp_receive(UDP *udp) { char buffer[BUFFER_SIZE]; int len = sizeof(udp->server_addr); int n = recvfrom(udp->socket_fd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&(udp->server_addr), &len); if (n == -1) { perror("recvfrom failed"); exit(1); } buffer[n] = '\0'; printf("Received: %s\n", buffer); } void udp_close(UDP *udp) { close(udp->socket_fd); } int main() { UDP udp; udp_init(&udp, "127.0.0.1", 8888); udp_send(&udp, "Hello, UDP Server!"); udp_receive(&udp); udp_close(&udp); return 0; } ``` 这是一个基于C语言的UDP实例,它通过`udp_init`函数初始化UDP并指定服务器的IP地址和端口号。使用`udp_send`函数可以将消息发送给服务器,使用`udp_receive`函数可以接收来自服务器的消息。最后通过`udp_close`函数关闭UDP实例。以上是一个简单的UDP实现示例,可以根据实际需求进行扩展和修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值