指针与数组笔试题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.请问下面三种变量声明有何区别?请给出具体含义

a)int const *p;

b)int* const p;

c)int const* const p;

2.在某工程中,要求设置一绝对地址为0x67a9的整型变量的值为0xaa66。编译器是一个

纯粹的ANSI编译器。写代码去完成这一任务。

答:为了访问一绝对地址把一个整型数强制转换(typecast)为一指针;

int *ptr;

ptr = (int *)0x67a9;

*ptr = 0xaa55;

3.下面程序的输出结果是多少?

main()

{

int a[5] = {1,2,3,4,5};

int *ptr = (int*)(&a+1);

printf("%d %d" , *(a+1), *(ptr-1) );

}

答:2 5

4.下面程序的输出结果是多少?

void foo(int [][3] );

main()

{

int a [3][3]= { { 1,2,3} , { 4,5,6},{7,8,9}};

foo(a);

printf("%d" , a[2][1]);

}

void foo( int b[][3])

{

++ b;

b[1][1] =9;

}

答:9

5.下面程序的输出结果是多少?

main()

{

int a[][3] = { 1,2,3 ,4,5,6};

int (*ptr)[3] =a;

printf("%d %d " ,(*ptr)[1], (*ptr)[2] );

++ptr;

printf("%d %d" ,(*ptr)[1], (*ptr)[2] );

}

答:2 3 5 6

6.这3个函数哪一个最可能引起指针方面的问题

int *f1(void)

{

int x =10;

return(&x);

}

int *f2(void)

{

int*ptr;

*ptr =10;

return ptr;

}

int *f3(void)

{

int *ptr;

ptr=(int*) malloc(sizeof(int));

return ptr;

}

答:f1 和f2

7.下面程序的输出结果是多少?

main()

{

char p;

char buf[10] ={ 1,2,3,4,5,6,9,8};

p = (buf+1)[5];

printf("%d" , p);

}

答:9

8.下面程序的输出结果是多少?

Void f(char**);

main()

{

char * argv[] = { "ab" ,"cd" , "ef" ,"gh", "ij" ,"kl" };

f( argv );

}

void f( char **p )

{

char* t;

t= (p+= sizeof(int))[-1];

printf( "%s" , t);

}

答:gh

9.

相关文档
最新文档