Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Arrays 指针数组分配_Arrays_Pointers_Allocation - Fatal编程技术网

Arrays 指针数组分配

Arrays 指针数组分配,arrays,pointers,allocation,Arrays,Pointers,Allocation,main()中的变量是何时分配的?特别是在以下情况下,为指向数组arr和2d的指针分配了多少内存: int main() { float a, b; int *b; float *(arr)[6]; float *(2d)[5][5]; } 这些变量是自动的、全局的还是静态的?所有这些变量都是自动的:全局变量需要在函数范围之外声明;静态变量需要有一个static修饰符 具体大小取决于系统。您可以通过打印sizeof(arr),sizeof(b)等找到答案 自动变量分配的确切时间

main()中的变量是何时分配的?特别是在以下情况下,为指向数组arr和2d的指针分配了多少内存:

int main()
{
  float a, b;
  int *b;
  float *(arr)[6];
  float *(2d)[5][5];
}

这些变量是自动的、全局的还是静态的?

所有这些变量都是自动的:全局变量需要在函数范围之外声明;静态变量需要有一个
static
修饰符

具体大小取决于系统。您可以通过打印
sizeof(arr)
sizeof(b)
等找到答案


自动变量分配的确切时间取决于编译器:有些是在进入函数时分配的,有些是在进入使用它们的块时分配的,有些可能被优化掉,所有这些变量都是自动的:全局变量需要在函数范围之外声明;静态变量需要有一个
static
修饰符

具体大小取决于系统。您可以通过打印
sizeof(arr)
sizeof(b)
等找到答案


自动变量分配的确切时间取决于编译器:有些是在进入函数时分配的,有些是在进入使用它们的块时分配的,有些可能被优化掉,而根本没有分配。

函数中声明的所有局部变量的内存将在运行时分配,在执行函数之前。对于每个函数,将在进程内存堆栈中创建一个激活记录,其中将包含所有局部变量。一旦功能执行完成,将弹出激活记录

函数内声明的所有变量仅被认为是<代码> Auto <代码>,除非它明确声明为“代码>静态<代码> >或<代码>登记< <代码>。在函数外部声明的变量将被视为全局变量

若变量在函数内部或外部声明为静态,则意味着内存分配将在编译时本身完成,编译时将位于数据段(或bss)中


所有指针变量都将存储一些虚拟地址(任何类型或函数的变量)。因此,对于32位机器,指针变量的大小为4字节,对于64位机器,指针变量的大小为8字节。

在执行函数之前,将在运行时为函数内声明的所有局部变量分配内存。对于每个函数,将在进程内存堆栈中创建一个激活记录,其中将包含所有局部变量。一旦功能执行完成,将弹出激活记录

函数内声明的所有变量仅被认为是<代码> Auto <代码>,除非它明确声明为“代码>静态<代码> >或<代码>登记< <代码>。在函数外部声明的变量将被视为全局变量

若变量在函数内部或外部声明为静态,则意味着内存分配将在编译时本身完成,编译时将位于数据段(或bss)中


所有指针变量都将存储一些虚拟地址(任何类型或函数的变量)。因此,指针变量的大小在32位机器上为4字节,在64位机器上为8字节。

标识符
2d
看起来无效,如果它是其他东西,可能以字母/下划线开头?标识符
2d
看起来无效,如果它是其他东西,也许以字母/下划线开头?