c - C“int”的大小是2字节还是4字节?

这是回答这个问题的一个很好的来源。
但这个问题是一种永远真实的回答“是的。两者兼而有之。”
这取决于您的架构。如果您要在 16 位或更少的机器上工作,它不能是 4 字节(=32 位)。如果您在 32 位或更好的机器上工作,它的长度是 32 位。
为了弄清楚,让你的程序准备好输出可读的东西并使用“sizeof”函数。这将返回您声明的数据类型的字节大小。但是在数组中使用它时要小心。
如果您声明int t[12];它将返回 12*4 字节。要获取此数组的长度,只需使用sizeof(t)/sizeof(t[0]). 如果您要构建一个函数,它应该计算发送数组的大小,请记住,如果
typedef int array[12];
int function(array t){
int size_of_t = sizeof(t)/sizeof(t[0]);
return size_of_t;
}
void main(){
array t = {1,1,1}; //remember: t= [1,1,1,0,...,0]
int a = function(t); //remember: sending t is just a pointer and equal to int* t
print(a); // output will be 1, since t will be interpreted as an int itselve.
}
所以这甚至不会返回不同的东西。如果您定义了一个数组并尝试在之后获取长度,请使用 sizeof。如果将数组发送给函数,请记住发送值只是第一个元素上的指针。但在第一种情况下,你总是知道你的数组有多大。情况二可以通过定义两个函数来解决,但会错过一些性能。定义函数(数组 t)并定义函数 2(数组 t,int size_of_t)。调用“function(t)”通过一些复制工作来测量长度并将结果发送到 function2,在那里你可以对可变数组大小做任何你想做的事情。