这段代码怎么理解
#include <stdio.h>void plus()
{
while(1)
{
printf("执行了!!\n");
}
}
int fun()
{
int rarry;
rarry = (int) +
return 0;
}
void main()
{
fun();
getchar();
return;
} 你这个死循环了,因为 while(1) 永远都是符合条件的 原意是要在主程序中调用 fun 函数,将 plus 的地址放到 rarry 数组中去,由于死循环了,什么都看不到了 加一句:break; 试一下
#include <stdio.h>
void plus()
{
while(1)
{
printf("执行了!!\n");
break;
}
}
int fun()
{
int rarry;
rarry = (int) +
return 0;
}
void main()
{
fun();
getchar();
return;
}
本帖最后由 livcui 于 2020-7-27 19:28 编辑
#include <stdio.h>
void plus()
{
while (1)
{
printf("执行了!!\n"); // 死循环???
}
}
int fun()
{
int rarry; // 总共有9个元素,用第11个就超缓冲区了
rarry = (int)&plus // 函数地址的地址?
return 0;
}
void main()
{
fun();
getchar();
return;
}错了好多
没懂你要干什么,就改成这样吧
#include <stdio.h>
void plus()
{
int i = 1;
while (i--)
{
printf("执行了!!\n");
}
}
int fun()
{
int rarry;
rarry = (int)&plus
return 0;
}
void main()
{
fun();
getchar();
return;
}
第一个函数,无限循环打印
第二个函数,定义一个数组,长度为9
第10号元素,即该数组第11个数的位置填充为第一个函数的地址转化成的整型数
返回
开始:
调用第二个函数
从输入区得到一个字符
返回
正常情况,数组溢出是无法进行。最多溢出一位。当然,可能这C就真能直接用而不检查
那么就会正常编译。
如果编译成功,那么,函数就填了一个地址进去,然后啥也不干
另外,编译器也可能检查到数组没有被赋值而罢工不干。 这段代码没有任何意义,不需要理解 快两个月了,还没理解吗?帮你顶上去,让大家帮你
页:
[1]