目录
1.在c语言库函数中将一个字符转换成整型的函数是atoi()吗,这个函数的原型是什么?
2.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
1.在c语言库函数中将一个字符转换成整型的函数是atoi()吗,这个函数的原型是什么?
函数名: atoi 功 能: 把字符串转换成长整型数 用 法: long atol(const char *nptr);
返回值:该函数返回转换后的长整数,如果没有执行有效的转换,则返回零。
#include<stdio.h>
#include<string.h>
int main(void)
{
long l,l1;
const char* str = "98765432";
const char* str1="abcdefg";
l = atoi(str);
l1=atoi(str1);
printf("string = %s integer = %ld\n", str, l);
printf("string = %s integer = %ld\n", str1, l1);
return(0);
}
截图:
2.对于一个频繁使用的短小函数,在C语言中应用什么实现,在C++中应用什么实现?
c用宏定义,c++用inline
C中:
#define MAX(a,b) ((a)>(b)?(a):(b))
C++中:在内联函数中如果有复杂操作将不被内联。如:循环和递归调用。
引入内联函数的目的是为了解决程序中函数调用的效率问题,这么说吧,程序在编译器编译的时候,编译器将程序中出现的内联函数的调用表达式用内联函数的函数体进行替换,而对于其他的函数,都是在运行时候才被替代。这其实就是个空间代价换时间的i节省。所以内联函数一般都是1-5行的小函数。在使用内联函数时要留神:
-
1.在内联函数内不允许使用循环语句和开关语句;
-
2.内联函数的定义必须出现在内联函数第一次调用之前;
-
3.类结构中所在的类说明内部定义的函数是内联函数。
inline int MAX(int a,int b)
{
return a>b?a:b;
}
// 程序的主函数
int main( )
{
cout << "Max (20,10): " << Max(20,10) << endl;
cout << "Max (0,200): " << Max(0,200) << endl;
cout << "Max (100,1010): " << Max(100,1010) << endl;
return 0;
}
截图:
补充::所有在类的声明中定义的函数将被自动认为是内联函数。
//补充::所有在类的声明中定义的函数将被自动认为是内联函数。
class A()
{
void c();// not a inline function;
void d(){ print("d() is a inline function.");}
}