字符串野指针 百练2681
原程序如下,确总是强退,原因是使用了野指针。。。
#include <iostream> #include <cstring> #include <cstdio> using namespace std; int main() { char *str = "asdf"; while(gets(str)){ int n=0; cout << *str << endl; /*while(*str!='\0') { str++; n++; cout << n << endl; } */ //cout << n << endl; } return 0; }
正确用法
char ch[100]; gets(ch);//OK ////////////////////// char str[100]; char *ch=str; gets(ch);//OK ///////////////////// char *ch=(char*)malloc(100); gets(ch);//Ok ///////////////////// \\\\\\\\\\\\\\\\\\\\\\\\\ char *ch; gets(ch);//这个是错的 ch野指针[百度有野指针的介绍 你可以了解一下] \\\\\\\\\\\\\\\\\\\\\\\\\ char *ch="gfgd"; gets(ch);//这个是错的 ch指向一个字符串"gfgd" 现在指向gets(ch) 会将数据写入这个字符串, 而字符串"gfgd"是不允许被修改的