C++中关于返回空指针问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++中关于返回空指针问题相关的知识,希望对你有一定的参考价值。
程序段执行以下任务:在字符串s中找到t的位置,若s中没有t,则否则返回NULL。
但我编好后运行,只能找到t的位置,若t不在s中,程序运行会出现内存错误~ Y Y Y Y ???
#include<iostream>
using namespace std;
char *strfind(char *s,char *t);
void main()
char *m,*n,a[100],b[10],*c;int k;
cout<<"请输入一个字符串"<<endl;
cin>>a;
cout<<"请输入查找字符串"<<endl;
cin>>b;
m=a,n=b;
c=strfind(m,n);k=strlen(m)-strlen(c)+1;
if(*c==NULL)
cout<<"没有该字符串"<<endl;
else cout<<"位置是"<<k<<endl;
char *strfind(char *s,char *t)
int i,j,leon;
for(i=0;i<=strlen(s)-strlen(t);i++)
leon=1;
for(j=0;j<strlen(t);j++)
if(s[i+j]!=t[j])
leon=0;
break;
if (leon==1)
return s+i;
return NULL;
k=strlen(m)-strlen(c)+1;
如果返回了空指针,那么操作strlen(c)会报错
改为:
void main()
char *m,*n,a[100],b[10],*c;int k;
cout<<"请输入一个字符串"<<endl;
cin>>a;
cout<<"请输入查找字符串"<<endl;
cin>>b;
m=a,n=b;
c=strfind(m,n);
if(c!=NULL)//加上这句判断
k=strlen(m)-strlen(c)+1;
if(c==NULL)//这里将*c改为c
cout<<"没有该字符串"<<endl;
else cout<<"位置是"<<k<<endl;
参考技术A if(*c==NULL) -> if(c==NULL)
一图总结C++中关于指针的那些事
指向对象的指针。指向数据成员的指针,指向成员函数的指针;
数组即指针,数组的指针,指针数组;
指向函数的指针,指向类的成员函数的指针,指针作为函数參数,指针函数;
指针的指针,指向数组的指针;常指针。指向常对象的指针。
……
大哥,这些都是什么鬼?。
用以下一张图全概括。
用样例对比图示。有感觉,就用术语将概念大声地念出来,动员全部的感官參与,搞清楚这些,不是事。
图例如以下:
以上是关于C++中关于返回空指针问题的主要内容,如果未能解决你的问题,请参考以下文章