牛客C++刷题

时间:2019-09-16
本文章向大家介绍牛客C++刷题,主要包括牛客C++刷题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

1. 给原类型起别名:typedef int v1;

2. 用户定义的函数不可以调用的函数是main();

3. if(judge)后面可以直接什么都不跟

4. 函数的定义不可以嵌套,函数的调用可以嵌套

5.C语言允许函数值类型缺省定义,此时该函数值隐含的类型是整形,但是实际上他妈的1999年就禁止了

6.int x[6][4],(*p)[4]; p=x;   则*(p+2)指向哪里?p是指向int[4]类型的指针,p = x,指向x的首地址。p+2,即加上2个指向类型的大小,即2 * 4 = 8个int,所以*(p+2)指向x[2][0]

7.
以下程序运行后的输出结果是(      )
int main()
{
int a=1,b=2,m=0,n=0,k;
 
k=(n=b<a)&&(m=a) ;
printf("%d,%d\n",k,m);
 
return 0;
}

& &逻辑与运算,先执行n=b<a,得n=0,赋值表达式的返回值为赋值符号右边的值,即0,逻辑与运算结束,不执行m=a。m未被赋值,仍为0。

8. 一个算法应该具有以下5个特性:有穷性、确定性、可行性、有零个或多个输入、有一个或多个输出。因此一个算法可以没有输入(程序的功能确定),但必须要有输出,没有输出的算法是没有意义的。注意算法与函数的区别。

9. 当基类构造函数需要外部传递参数才能进行初始化时,派生类必须显式定义构造函数,为基类传递参数;基类如果不需要传递或者可以不传递参数,派生类可以不用显式定义构造函数。
10. 类的静态成员变量,为所有类对象所共有,但不属于任何一个对象
11. char s[10];s="abcdefg";出错,是因为数组名s是常量指针,代表数组的首地址,它的值不能被改变
12.if(judge)后如果不使用{}则默认只有一句在{}内,注意,是一句
13. 存在性就是变量生命周期。可见性就是能访问。内部静态类就是只有在包含该类的上下文里才能使用的类,比如在一个类内部定义的类。但它是全局存在的。
14. 下面代码的输出结果:
void main(void)
{
     int a[5]={1,2,3,4,5};
     int *ptr=(int *)(&a+1);
     printf("%d,%d",*(a+1),*(ptr-1));
}
*(a+1)没有什么疑问,就是指a[1]=2。
 *(ptr-1)是主要难点,我们要先弄清楚ptr指针代表什么?
&a+1不是首地址+1,&a是把数组看成一个整体,即偏移了整个数组a的大小(也就是5个int的大小)。所以int *ptr=(int *)(&a+1),其实ptr实际是&(a[5]),也就是a+5,注意这里的a[5]只是逻辑上的,并没有物理上的数组元素,表示指针ptr跳过数组的长度指向最后一个数字的下一个整型。
故*(ptr-1) = a[4] = 5。
15.结构体总的大小要被最大的整除,本体中long long 为8字节,所以整体大小为8的倍数。 另外,为什么不是16,因为每种类型变量的首地址要是自己类型的字节数整除,所以char后面要空着3个字节,之后才是int型变量。 所以一共24字节。

原文地址:https://www.cnblogs.com/spock12345/p/11529340.html