小编Sub*_*noy的帖子

为什么socket编程中accept()中使用socklent_t *?

在 C 套接字编程中,accept()声明如下所示:

int accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen);
Run Code Online (Sandbox Code Playgroud)

sockfd我能理解,的用途struct sockaddr *addr

但为什么我们必须传递套接字长度的地址,本来可以的socklen_t。因为如果accept()函数需要长度,那么它可以通过 来获取socklen_t。为什么函数的原型要这样声明?

那么使用 type 的原因是什么socklen_t *

c sockets networking

3
推荐指数
1
解决办法
3398
查看次数

为什么 32 位和 64 位地址有两种不同的长度?

当我在 64 位机器上运行此代码时:

?#?include ?<stdio.h>
int main() 
{ 
    int a[10]; 
    printf("%p",&a);
    return 0;  
}
Run Code Online (Sandbox Code Playgroud)

它输出:

0x7fffe9ebf984 (14 digits)
Run Code Online (Sandbox Code Playgroud)

在一本教科书中,我发现了这个:

我的电脑的内存地址是 32 位的,用八位十六进制数字表示。

我的问题是:

为什么 32 位和 64 位地址有两种不同的长度?

32 位地址如何用 8 位数字表示,64 位数字如何用 14 位数字表示?

c memory

2
推荐指数
2
解决办法
4426
查看次数

for循环从C转换为Python

for在C中编写循环时如何编写循环:

for(i=0;i<10;)
{
    if(i%2==0)
       i=i+3;
    else
       i++;
    printf("%d\n",i);
}
Run Code Online (Sandbox Code Playgroud)

谁能告诉我这件事?我搜索了很多但找不到它.我在Python中用这样写的:

for i in range(0,10):
    if (i%2==0):
        i+=3
    else:
        i+=1
    print i
Run Code Online (Sandbox Code Playgroud)

输出:

3
2
5
4
7
6
9
8
11
10
Run Code Online (Sandbox Code Playgroud)

预期产量:

3
4
7
8
11
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释这个输出的原因吗?

python for-loop

0
推荐指数
1
解决办法
72
查看次数

标签 统计

c ×2

for-loop ×1

memory ×1

networking ×1

python ×1

sockets ×1