在 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 *?
当我在 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 位数字表示?
我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)
任何人都可以解释这个输出的原因吗?