我認爲指向NULL
的指針可以轉換爲0
。所以我寫下面的程序:爲什麼指向NULL-charater的指針未轉換爲false
#include <iostream>
#include <regex>
#include <string>
#include <cstdlib>
bool is_strtoi(const std::string& str)
{
char *p;
std::strtol(str.c_str(), &p, 10);
return *p == '\0';
}
bool is_strtoi1(const std::string& str)
{
char *p;
std::strtol(str.c_str(), &p, 10);
return p; //Pointer to NULL should be converted to false;
}
int main()
{
std::string test1("123asd2");
std::string test2("123123");
std::cout << is_strtoi1(test1) << std::endl;
std::cout << is_strtoi1(test2) << std::endl;
std::cout << "---" << std::endl;
std::cout << is_strtoi(test1) << std::endl; //prints 1
std::cout << is_strtoi(test2) << std::endl;
}
Accroding到標準的4.12節:
零值,空指針值,或空構件指針值 轉換爲false
那麼爲什麼沒有?
我在代碼的任何地方都看不到一個空指針。 – AnT