您的位置:首页 > 职场人生

面试题目之指针

2012-09-30 16:59 127 查看
题目一:请分析下面代码的结果。

#include<stdio.h>
#include<string.h>
#include<malloc.h>

int main()
{
char *p1 = "China";
char *p2 = NULL;

p2 = (char*)malloc(20);
memset(p2,0,20);

while(*p2++ = *p1++);

printf("%s\n",p2);

return 0;
}


解答:

输出为空。上题的本意是将字符串"China"复制到p2所指向的内存区域,然后打印p2所指向的字符串。但是结果是什么也没有复制,是因为p1和p2同时自增,当复制完p1的字符串的时候,p2也指向了"China"字符串的下一个地址处。故内容为空。在ASCII码中0代表'\0'。

题目2:请问在printf函数中采用什么样的形式打印变量内存的地址?

解答:这是c语言中常用的一项基本知识,最常用的地址打印方式是%p和0x%x两种。见下面的代码:

#include<stdio.h>

int main()
{
int a;
printf("%p\n",&a);
printf("0x%x\n",&a);

return 0;
}


程序执行的结果是:



在编程中通常使用的是0x%x的形式进行打印。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: