关于users + sockfd和&users[sockfd],(sockfd是一个整型)

users 是一个用户对象的数组,而 sockfd 是数组的索引。users + sockfd 计算出的结果是指向 users 数组中某个用户对象的指针,也就是 &users[sockfd]。这意味着 users + sockfd 是指向特定用户对象的指针。

演示 users + sockfd&users[sockfd] 的效果

#include <iostream>

class User {
public:
    User(int id) : id(id) {}
    int get_id() const { return id; }
private:
    int id;
};

int main() {
    // 创建一个用户对象数组
    User users[] = { User(1), User(2), User(3) };

    // 使用索引访问
    int sockfd = 1; // 假设我们想访问第二个用户
    User* user_ptr1 = users + sockfd;  // 计算指针偏移量
    User* user_ptr2 = &users[sockfd];  // 直接取地址

    // 输出用户ID以验证结果
    std::cout << "User ID from users + sockfd: " << user_ptr1->get_id() << std::endl;
    std::cout << "User ID from &users[sockfd]: " << user_ptr2->get_id() << std::endl;

    return 0;
}

输出结果:

User ID from users + sockfd: 2
User ID from &users[sockfd]: 2

说明:

  • users 是一个 User 对象数组。
  • sockfd 是索引值(例如 1),我们用它来访问数组中的元素。
  • users + sockfd 和 &users[sockfd] 都得到指向数组中对应用户对象的指针。
  • 运行程序会输出相同的用户ID,验证两者的等效性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值