2016.9.12
2016-09-12 20:38
204 查看
1
int main()
{
int a; float b, c;
scanf("%2d%3f%4f", &a, &b, &c);
printf("\n a = %d, b = %d, c = %f\n", a, b, c);
}
问:输出什么?
printf函数执行的时候,会先把这三个数字栈里,然后再执行打印。压入栈的时候按照数据本身的长度来。首先把c和b压入,并且每一个都是8个字节(printf自动转化为double)。然后再压入a是4个字节。然后再执行打印。打印的时候按照用户指定的格式来出栈。首先打印a,a打印正常。然后又打印4个字节长度的b,在栈里面由于b长度是8个字节,并且b目前是64位的表示方式,数据的后面全是0。(float变double),电脑是小端存储方式,0存储在距离a近的地方。打印b的时候,打印的4个字节都是0.然后再打印c,c用正常的方式打印,会一下子
读取8个字节,下好,读出来的8个字节前面4个字节全是0,因此为0。
小端存储:最低地址存放最低字节。如数据12345678H,存储的数字是:78563412H。可以粗略想象为跟平时写的数字相反。而大端存储的存储方式则跟我们平时写的数字顺序一样。
2
回调函数本身可以是全局函数、静态函数和某个特定的类的成员函数。(False)
原因:回调函数就是一个通过函数指针调用的函数。如果把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。类的成员函数需要隐含的this指针,这是回调函数没有办法提供的。
3
#include<iostream>
using namespace std;
class A
{
public:
A()
{
printf("A");
}
};
int main()
{
A* p1 = new A;
A* p2 = (A*) malloc (sizeof(A));
}
问:输出什么
A;该题主要考查new和malloc的区别,new会分配内存,并调用类的构造函数创建对象,而malloc只是分配内存,不调用类的构造函数创建对象,这个程序应该用delete p1;显示释放掉p1所指的堆上的内存,这样才会调用类的析构函数,否则不会调用。
4
#include <stdio.h>
问:输出什么?
数组名作为函数参数,执行fun函数时,传进去的a指针被重新指向了b,所以原本a数组的地址内容不变,所以输出结果为ABCDE。
#include <stdio.h>
int main()
{
int a; float b, c;
scanf("%2d%3f%4f", &a, &b, &c);
printf("\n a = %d, b = %d, c = %f\n", a, b, c);
}
问:输出什么?
printf函数执行的时候,会先把这三个数字栈里,然后再执行打印。压入栈的时候按照数据本身的长度来。首先把c和b压入,并且每一个都是8个字节(printf自动转化为double)。然后再压入a是4个字节。然后再执行打印。打印的时候按照用户指定的格式来出栈。首先打印a,a打印正常。然后又打印4个字节长度的b,在栈里面由于b长度是8个字节,并且b目前是64位的表示方式,数据的后面全是0。(float变double),电脑是小端存储方式,0存储在距离a近的地方。打印b的时候,打印的4个字节都是0.然后再打印c,c用正常的方式打印,会一下子
读取8个字节,下好,读出来的8个字节前面4个字节全是0,因此为0。
小端存储:最低地址存放最低字节。如数据12345678H,存储的数字是:78563412H。可以粗略想象为跟平时写的数字相反。而大端存储的存储方式则跟我们平时写的数字顺序一样。
2
回调函数本身可以是全局函数、静态函数和某个特定的类的成员函数。(False)
原因:回调函数就是一个通过函数指针调用的函数。如果把函数的指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方法直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。类的成员函数需要隐含的this指针,这是回调函数没有办法提供的。
3
#include<iostream>
using namespace std;
class A
{
public:
A()
{
printf("A");
}
};
int main()
{
A* p1 = new A;
A* p2 = (A*) malloc (sizeof(A));
}
问:输出什么
A;该题主要考查new和malloc的区别,new会分配内存,并调用类的构造函数创建对象,而malloc只是分配内存,不调用类的构造函数创建对象,这个程序应该用delete p1;显示释放掉p1所指的堆上的内存,这样才会调用类的析构函数,否则不会调用。
4
#include <stdio.h>
void fun(char* p, int n) { char b[6] = "abcde"; int i; for(i = 0, p = b; i < n; i++) { p[i] = b[i]; } } void main() { char a[6] = "ABCDE"; fun(a, 5); printf("%s\n", a); }
问:输出什么?
数组名作为函数参数,执行fun函数时,传进去的a指针被重新指向了b,所以原本a数组的地址内容不变,所以输出结果为ABCDE。
#include <stdio.h>
void fun(char* p, int n) { char b[6] = "abcde"; int i; for(i = 0, p = b; i < n; i++) { p[i] = b[i]; } } void main() { char a[6] = "ABCDE"; fun(a, 5); printf("%s\n", a); }
相关文章推荐
- iOS开发之蓝牙通信
- 解决Ubuntu安装openssh-server依赖问题
- Selenium WebDriver 中鼠标和键盘事件分析及扩展(转)
- android SharedPreferences的一般用法(存取清删)
- ExtJs教程----利用 Sencha cmd 生成应用程序
- RHEL7 的注册
- poj 2983 Is the Information Reliable?
- corosync+pacemaker实现openstack HA(一)
- 励志
- HDU 5875 Function
- HDU 5876 Sparse Graph
- request is not finfished yet!
- svn 切换用户
- 对称加密与非对称加密2_SSL
- String to Integer (atoi)
- 【一】React.JS & BackBone.JS 前后端分离初体验---React组件
- HDU1224-Free DIY Tour
- cuda reduce学习
- JAVA001对象导论10
- 【T电商 3】Nginx的Http(图片)服务器配置+ftp上传使用说明