一位大神写的文章点我看
我们来看一个例子,给出一个字符串(以0为终止),和一个字符,看能否在字符串里找到这个字符。找到输出他,找不到。输出无。下面是三种指针方法
#include<stdio.h>
void find(char *am,char pr,char **pp)//二重指针
{
//函数调用时会对每一个参数进行一个隐含的赋值操作
//pp的值就是p的地址
//即,pp=&p;
for(int i=0;*(am+i)!='0';i++)
{
if(*(am+i)==pr)
{
*pp=am+i;
//*pp=p=am+i;
//所以p的值就是&am[i],即p的值就是该字符的地址
}
}
}
int main(){
char am[50]={"1234560"} ;
char tep='9';
char *p=0;
//上面就是p=0;
find(am,tep,&p);//把p的地址传了进去,于是我们可以直接修改p了 *******
if(p==0) printf("无");
else printf("%c",*p);//p的值是一个字符的地址,于是*p就是该字符
}
#include<stdio.h>
char *find(char *am,char pr,char *pp)//该函数,返回类型为指针,指针类型是char *,指针所指向的内容就是char
{
//函数调用时会对每一个参数进行一个隐含的赋值操作
//相当于pp=p;
// printf("%d",pp);
//注意,此处有点鸡肋,详情见下面代码
for(int i=0;*(am+i)!='0';i++)
{
if(*(am+i)==pr)
{
pp=am+i;
}
}
return pp;
}
int main(){
char am[50]={"1234560"} ;
char tep='3';
char *p=0;
//上面就是p=0;
p=find(am,tep,p);//这里传的是值,即p的值0
if(p==0) printf("无");
else printf("%c",*p);
}
#include<stdio.h>
char *find(char *am,char pr)//该函数,返回类型为指针,指针类型是char *,指针所指向的内容就是char
{
char *pp;
for(int i=0;*(am+i)!='0';i++)
{
if(*(am+i)==pr)
{
pp=am+i;
}
}
return pp;
}
int main(){
char am[50]={"1234560"} ;
char tep='5';
char *p=0;
//上面就是p=0;
p=find(am,tep);
if(p==0) printf("无");
else printf("%c",*p);
}