注册 登录
编程论坛 C++教室

如何理解指针作为循环的判断条件

meweiwei 发布于 2007-06-10 11:26, 1801 次点击

请问下面一个循环语句用*P作为循环的判断条件是什么意思?谢谢!!
#include<iostream>
using namespace std;
void f1(int *s)
{
int *p,t;
for (p=s;*p;p++);//*p作为循环的判断条件是什么意思?
while (s<p-1)
{
t=*--p;
*p=*s;
*s++=t;
}
}
void main()
{
int str1[]="EFG456";
cout<<str1<<'\n';
f1(str1);
cout<<str1<<'\n';
f1(str1);
cout<<str1<<'\n';
}

5 回复
#2
aipb20072007-06-10 11:31
对p解引用,是否为0作判断!
#3
doom52112007-06-10 11:32

主程序中函数f1的实参传的是一个整型数组的首地址,那么在for循环里首先把p赋值一个s,则整型指针p也指向这个数组,for循环中间的判断条件应该是判断p是否越界的意思吧,就是p是否还是指向这个数组,我也不知道是不是这样,提出个人愚见,希望大虾指导啊

#4
meweiwei2007-06-10 11:39
不过如果把int str1[]="EFG456";改为char str1[]="EFG4560";也就是加上了一个零,也能能成函数的功能,请问二楼,这是怎么回事?
#5
aipb20072007-06-10 13:24
以下是引用meweiwei在2007-6-10 11:39:50的发言:
不过如果把int str1[]="EFG456";改为char str1[]="EFG4560";也就是加上了一个零,也能能成函数的功能,请问二楼,这是怎么回事?

你给出的代码是错误的哦!你编译过了吗?
你应该用char数组而不是int数组,
在char数组中

for (p=s;*p;p++);//*p 等同于 *p != '\0'

推荐后一种写法。

#6
meweiwei2007-06-10 20:11
谢谢楼主,的确写错了
1