【发布时间】:2014-02-13 06:04:23
【问题描述】:
我在为考试准备一些关于 c/c++ 的一般性问题。其中一个问题是描述函数 leer(char *a) 返回的值。我希望该函数返回 c 字符串中的空格数,但我的测试表明 leer 实际上只是检查第一个字符,因此如果第一个元素是空格,则返回 1,否则返回 0。它甚至不遍历字符串,而是在检查第一个字符后返回,而主函数内部的相同循环计算所有空格,就像我最初想的那样。我不明白为什么它们的行为不同,因为 leer 的参数与我在 main 函数内的 for 循环中使用的参数相同。我假设我在这里缺乏一些指针知识,但我无法弄清楚为什么我最初的想法是错误的。
#include <iostream>
int leer(char *a)
{
for(int b=0;*a!='\0';a++)
{
if(*a==' ') b++;
return b;
}
}
int main()
{
char *a = "Dies ist ein Test";
std::cout << leer(a) << std::endl; //Prints 0
int b;
for(b=0;*a!='\0';a++)
{
if(*a==' ') b++;
}
std::cout << b << std::endl; //Prints 3
}
【问题讨论】:
-
与指针无关。查看返回语句。
-
是的,嗯,这很尴尬 :D 我太专注于指针,以至于我什至没有注意到它。谢谢你指出我会搜索几个小时。
标签: c++ c function char arguments