马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
第1题/共11题【单选题】
关于指针的概念,错误的是:( )
A.指针变量是用来存放地点的变量
B.指针变量中存的有效地点可以唯一指向内存中的一块地区
C.野指针也可以正常利用
D.局部指针变量不初始化就是野指针
答复精确
答案分析:
A:精确,指针变量中存储的是一个地点,指向同范例的一块内存空间
B:精确,地点是唯一的,一个指针变量中只能存储一个地点,因此可以唯一指向内存中的一块地区
C:野指针指向的空间时非法的,大概说该指针指向的空间已经不存在了,因此野指针不能利用
D:局部指针变量没有初始化时内里就是随机值,因此指向谁人位置不肯定,故将其当作是野指针
因此:选择C
第2题/共11题【单选题】
以下体系中,int范例占几个字节,指针占几个字节,利用体系可以利用的最大内存空间是多大:( )
A.32位下:4,4,2^32 64位下:8,8,2^64
B.32位下:4,4,不限定 64位下:4,8,不限定
C.32位下:4,4,2^32 64位下:4,8,2^64
D.32位下:4,4,2^32 64位下:4,4,2^64
答复精确
答案分析:
32位体系下:
int占4个字节,指针表现地点空间个数,统共有2^32个,故占4个字节
64位体系下:
int占4个字节,指针表现地点空间个数,统共有2^64个,故占8个字节
因此:选择C
第3题/共11题【编程题】
利用指针打印数组内容
作业内容
写一个函数打印arr数组的内容,倒霉用数组下标,利用指针。
arr是一个整形一维数组。
我的答案:
- #include <stdio.h>
- int main()
- {
-
-
- int arr[10] = {
-
- 0,1,2,3,4,5,6,7,8,9 };
- int* p = arr;
- int* pend = arr + 9;
- while (p <= pend)
- {
-
-
- printf("%d ", *p);
- p++;
- }
- return 0;
- }
复制代码 参考答案:
- #include <stdio.h>
- int main()
- {
-
-
- int arr[] = {
-
- 1,2,3,4,5,6,7,8,9,10};
- //在这里完成代码
- // 分析:因为数组中存储的元素类型是int类型的,因此只要给一个int的指针,依次取索引数组中的每个元素即可
- int* p = arr; // 数组名代表数组首元素的地址
- for(int i = 0; i < sizeof(arr)/sizeof(arr[0]); ++i)
- {
-
-
- printf("%d ", *p); // *p: 取到p所指向位置的元素
- ++p; // 获取p的下一个位置
- }
-
- return 0;
- }
复制代码 第4题/共11题【单选题】(这道题其时不会做,做错了)
在小端呆板中,下面代码输出的结果是:( )
- #include <stdio.h>
- int main()
- {
-
-
- int a = 0x11223344;
- char *pc = (char*)&a;
- *pc = 0;
- printf("%x\n", a);
- return 0;
- }
复制代码 A.00223344
B.0
C.11223300
D.112233
(答复错误)我的答案:A
(精确答案是:C)
答案分析:
假设,a变量的地点为0x64,则a变量在内存中的模子为:
0x64| 44 |
0x65| 33 |
0x66| 22 |
0x67| 11 |
char范例的指针变量pc指向只能指向字符范例的空间,如果黑白char范例的空间,必须要将该空间的地点强转为char范例。
char pc = (char)&a; pc现实指向的是整形变量a的空间,即pc的内容为0x64,即44,
*pc=0,即将44位置中内容改为0,修改完成之后,a中内容为:0x11223300
低地点 高地点
0X 44 33 22 11
因此:选择C
涉及的知识点:
大端存储模式:是指数据的低位生存在内存的高地点中,而数据的高位,生存在内存的低地点中。
小端存储模式:是指数据的低位生存在内存的低地点中,而数据的高位,生存在内存的高地点中。
第5题/共11题【单选题】
下面代码的结果是:( )
- #include <stdio.h>
- int main()
- {
-
-
- int arr[] = {
-
- 1,2,3,4,5};
-
复制代码 |