可能你这环境不支持在for行中定义i变量,改为
int i=0;
for(;i<c;i++)
把int i拿到函数最前面定义,不要在for里定义变量
int i;
for(i=0;i<99;i++)这样
注意初始化还是要放进for里,不要只在最前初始化一次,否则反复调用for会出问题
应该不是第一条的问题,错误提示是说,for(int i = 0; i < c; i++) 这样定义循环因子 int i ,你的编译器不支持,所以需把 int i 的定义挪到 for()循环的外面定义,所有错误都是这个问题,可以把int i; 定义在函数开始的首行。
c 语言最初不允许随处定义变量,变量声明仅可以在函数初始处,在 C99 和 C11 标准中,允许 for 循环声明初始变量
原文 | 中文 |
---|---|
for loop | for 循环 |
initial declarations | 初始声明 就是你的 int i = 0 |
are only allowed in c99 or c11 mode | 仅在 C99 或 C11 标准下允许 |
编译的时候可以加上 -std=c99
或 -std=c11
或者把 i 放在函数头部声明。
先在反汇编窗口中,右键选择显示符号名,可以看到:
关闭字符名则会显示地址:
dword ptr
表示地址内容为双字(4字节)
数据
观察汇编代码,对 局部变量 a
、 b
、 c
的创建及初始化是从 地址ebp-8
开始的。
代码向下执行:
局部变量的创建相对简单,一张动图就可以理解。