char *e;
while(*e!=0)
{
if(isalnum(*e))
printf("%c",*e);
e++;
}
但是*e
是一个指针,对吗?
所以应该打印地址,对吗?
最佳答案
But*e is a pointer right ?
没有。 e
是一个指针。 *e
是它指向的第一个char
。当在表达式(而不是类型声明)中用作一元运算符(具有一个操作数的运算符)时,*
是 indirection operator .
What does a *variable !=0 mean?
假设循环实际上是:
while(*e!=0)
...表示当e
指向的char
为!=0
时继续循环。 C 字符串以 0 char
、'\0'
终止(但通常简单地写为 0
)。
我应该注意到问题中的循环,除了基本的拼写错误,例如 Char
而不是 char
和 While
而不是 while
存在一个主要逻辑错误,即它永远不会更改循环体内 e
的值。这意味着如果它循环一次,它将永远循环;它需要 ++e;
某处。 (e
也从未初始化。)例如:
char *e = /*...something...*/;
while (*e != 0)
{
if(isalnum(*e)) {
printf("%c",*e);
}
++e;
}
或者,实际上,这就是 for
的用途:
char *e;
for (e = /*...something...*/; *e != 0; ++e)
{
if(isalnum(*e)) {
printf("%c",*e);
}
}
关于c - *变量!=0 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58500403/