C/C++
三十四、关系运算符>逻辑运算符(特别低)
三十五、C++中标准输入输出流
cin,C++编程语言互换流中的标准输入流。
cout,C++编程语言互换流中的标准输出流。
cerr,C++预定义的标准错误输出函数,作用就是直接将参数(错误信息)打印到屏幕上。
Cfile是MFC文件类的基类,它直接提供非缓冲的二进制磁盘输入/输出设备,并直接的通过派生类支持文本文件和内存文件。
三十六、 要实现将结构体数组student的所有元素写到文件fp中,只需要保证写到文件中的字节数为50*sizeof(struct st)即可。
sizeof是操作符,在编译阶段就获得结果。
strlen是函数调用,在运行阶段获得值。
sizeof(float)返回值是一个整型,在编译阶段就被整型替代了,所以这是一个整型表达式。
三十七、
- 指针函数:指带指针的函数,即本质是一个函数,返回类型是某一类型的指针。
int *f(x,y)
首先,他是一个函数,只不过这个函数的返回值是一个地址值。函数返回值必须用同类型的指针变量来接受,也就是说,指针函数一定有函数返回值,而且,在主调函数中,函数返回值必须赋给同类型的指针变量。
- 函数指针:是指向函数的指针变量,即本质是一个指针变量。
int (*f) (int x); /*声明一个函数指针*/
f=func; /*将func函数的首地址赋给指针*/
指向函数的指针包含了函数的地址的入口地址,可以通过它来调用函数。生命格式如下:
类型说明符*(函数名)(参数)
其实这里不能称为函数名,应该叫做指针的变量名。这个特殊的指针指向一个返回整型值的函数。指针的声明和它指向函数的声明保持一致。
三十八、
三十九、拷贝构造函数调用的时机:
1、 当用类的一个对象初始化该类的另一个对象时;
2、 如果函数的形参是类的对象,调用函数时,进行形参和实参结合时;
3、 如果函数的返回值是类的对象,函数执行完成返回调用者时;
4、 需要产生一个临时类对象时。
四十、当数组作为函数参数传递的时候,它就退化成指针了,传递过去的其实是数组的首地址。要求数组长度的话,可以在main函数内部求得。
四十一、
/*函数*/
int f(unsigned int n)
{
unsigned int m=0;
for(m=0;n;++m)
{
n&=(n-1);
}
return m;
}
/* 问 f(2486)的返回值是(),答案是7 */
/*
比较完整的答案:
//求二进制数1的个数
int numOfOne(x){
int count = 0;
while(x)
{
count++;
x=x&(x-1);
}
return count;
}
求二进制中0的个数为下:
int numOfZero(x)
while(x+1)
{
count++;
x=x|(x+1);
}
return count;
这道题求的时候有技巧,一般都要转化为16进制,再转化为2进制,
那么这里2486=2048+438
已知2048=2^n,n尽管他是多少,都只能取一个1,所以只需取438中
1的个数,再加上1就可以了。
2486=2048+256+128+32+16+4+2 共7个1。
*/
四十二、
/*请阅读以下程序,其运行结果为() 答案为YES*/
void main()
{
char c='A';
if('0'<=c<='9')
printf("YES");
else
printf("NO");
}
/*
关系运算符具有左结合性,所以('0'<=c<='9')等价于(('0'<=c)<='9')。
因为c='A',所以('0'<=c)的值为真,即为1,1<='9'的值为真,即为1.所以输出YES。
*/
四十三、
核心:
1、 如果const位于*的左侧,则const就用来修饰指针所指向的变量,即指针指向于常量。
2、 如果const位于*号的右侧,const就是修饰指针本身,即指针本身是常量。