我在c。
中编写了下一个代码我做错了什么:
int *ip;
int i;
ip = (int*) malloc(5*sizeof(int));
for(i=0;i<5;i++){
ip[i]=i;
}
当我使用调试器运行代码时,它就像我没有通过IP迭代一样。
有人可以帮忙吗?
答案 0 :(得分:0)
其作品
#include <stdio.h>
#include <stdlib.h>
int main()
{
int *ip;
int i;
ip = (int *) malloc(5*sizeof(int));
for(i=0;i<5;i++){
ip[i]=i;
}
for(i=0;i<5;i++){
printf(" %d ",ip[i]);
}
free(ip);
return 0;
}
out put 0 1 2 3 4
答案 1 :(得分:0)
我假设问题如下:当您使用调试器逐步遍历程序时,您无法看到它运行循环5次。
原因可能在于C编译器执行的优化,特别是循环展开。
如果您使用gcc,请尝试选项-O0
以避免优化。这可能有助于调试。