我用 C++ 编写了一个简单的指针代码,并且在“str”周围出现堆栈损坏的运行时错误。我知道如果您试图到达数组中未分配的位置,它会给出此错误,但在这种情况下,当指针到达 '\0' 时,while 会停止。可能是ptr继续在内存中前进并指向'\ 0'吗?提前致谢!: - )
这是代码:
#include <iostream>
using namespace std;
#define SIZE 5
void CHANGE(char str[]);
void CHANGE(char str[])
{
char *ptr=str;
while(*ptr!='\0')
{
if( ( (*ptr>='a')&&(*ptr<='z') )|| ( (*ptr>='A')&&(*ptr<='Z') ) )
{
if(*ptr=='z')
*ptr='a';
else if(*ptr=='Z')
*ptr='A';
else
(*ptr)++;
}
ptr++;
}
}
void main()
{
char str[SIZE];
cout<<"please enter a sring\n";
cin>>str;
CHANGE(str);
cout<<str<<"\n";
}