调试时我发现我的程序停在:"cout <<*ptr; cout <<"\n";" 这段代码有什么问题?
#include<iostream>
using namespace std;
int *ptr = 0;
void myfun(void);
int main()
{
void myfun();
for(int j = 1; j < 3; j++)
{
ptr = ptr-j ;
cout << *ptr ; cout << "\n";
}
return(0);
}
void myfun(void)
{
int x[3] = {11,12,13};
for(int i = 0; i <3; i++)
{
ptr = &x[i];
ptr = ptr+1;
}
}
Run Code Online (Sandbox Code Playgroud)
你用零初始化你的指针
int *ptr = 0;
Run Code Online (Sandbox Code Playgroud)
这意味着它是一个空指针.
然后,您将指针算法应用于空指针.行为未定义.您正在取消引用以这种方式获得的无意义指针.行为未定义.
注意
void myfun();
Run Code Online (Sandbox Code Playgroud)
in main不是函数调用,它是函数声明.对myfun(显然是你的意图)的调用看起来如下
myfun();
Run Code Online (Sandbox Code Playgroud)
你为什么把它void放在你的代码版本中?
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |