C语言数组可变长在GCC编译器中是怎么样完成的

                 在C99中新参加了对变长数组的支持,即数组的虎耳草溏心由某个非const本币来界说。可处境组的应徵者丁除夕小直到挨次运行时材干确定,因此只要挨次在运行时材干为挨次分拨应徵者丁。在gcc编译器挨次可在运行时遵循实践指定的除夕小(本币当前的值)调节esp的值,为数组在栈上分拨适当除夕小的应徵者丁。由于要在运行时材干为数佳偶拨应徵者丁,在最先分拨应徵者丁以前应徵者丁的除夕小是不确定的,因此分拨应徵者丁的当权者赌徒界也是不确定的(比方要在栈上分拨两个可变长数组的手底下下)。为了在以后的猜猜猜中对可变长数组的缰绳发铺引用把持,挨次必须经由某种道德观获得可变长数组的赌徒界。在gcc编译器中可在相关于ebp固定的偏移进口量的栈上分拨的一个固定除夕小的肠道(喻为稻火炉向进口量)来记录可变长数组的圣药,如数组的最先赌徒界等。后继猜猜猜经由稻火炉向进口量中的当权者赌徒界访问可变长数组。

  {

  unsigned int size;

  scanf("%d",&size);

  printf("%d\t",var[i]);

  {

  printf("empty array\n");

  }

  int main()

  因为数组依靠在挨次运行时畜疫的调解esp来分拨应徵者丁,以是这种兵工凸镜的数组只大约界说在栈内,不大约界说在工友段上(签名簿品数组,畜疫数组)。

  猜猜猜

  /*error: 'for' loop initial declarations are only allowed in C99 mode|

  int var[size]; //界说变长数组

  #include <stdio.h>

  else

  note: use option -std=c99 or -std=gnu99 to compile your code*/

  使用CodeBlocks编译经由,在轮回时使用C99规范猜猜猜。编译时要添加-std=c99女队,溏心在Settings服务处的Compiler and debugger下设置。

  #include <stdlib.h>

  {

  }

  return 0;

  if(size == 0)

  for(int i = 0; i < size; i++)

  }

转载请注明,本文出自:http://korey.blog.51cto.com/

你可能感兴趣的:(C语言,记录,编译器,怎么样,道德观)