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;
}
上面这3个函数哪一个最可能引起指针方面的问题
a)只有f3
b)只有f1 and f3
c)只有f1 and f2
d)f1, f2, f3
1、c
main()
{
int i=3;
int j;
j=sizaof(++i+ ++i);
printf("i=%d j=%d",i,j);
}
这段程序的输出是
a)i=4 j=2
b)i=3 j=2
c)i=3 j=4
d)i=3 j=6
2、i=3 j=8
void f1 (int *,int);
void f2(int *,int);
void(*p[2])(int *,int);
main()
{
int a;int b;
p[O]=f1;p[1]=f2;
a=3;
b=5;
p[O](&a,b);
printf("%d/t %d/t",a,b);
p[1](&a,b);
printf("%d/t %d/t",a,b);
}
void f1 (int*p,int q)
{
int tmp;
tmp =*p;
*p =q;
q=tmp;
}
void f2(int*p,int q)
{
int tmp;
tmp =*p;
p =9;
q=tmp;
}
这段程序的输出是
a)5 5 5 5
b)3 5 3 5
c)5 3 5 3
d)3 3 3 3
3、a
void e(int );
main ()
{
int a;
a-3;
e (a);
}
void e(int n)
{
if(n>0)
{
e(--n);
printf("%d”,n);
e(--n);
}
}
这段程序的输出是
a)0 1 2 0
b)0 1 2 1
c)1 2 0 1
d)0 2 1 1
4、a
typedef int(*test)( float *, float*)
test tmp;
tmp的类型是
a)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)
Pointer to function of having two arguments that is pointer to float
b)整型
c)函数的指针,该函数以两个指向浮点数(float)的指针(pointer)作为参数(arguments)并且函数的返回值类型是整型
Pointer to function having two argument that is pointer to float and return int
d)以上都不是
5、c
main()
{
char p;
char buf[10] ={1,2,3,4,5,6,9,8};
p=(buf+1)[5];
printf("%d”,p);
}
这段程序的输出是:
a)5
b)6
c)9
d)以上都不对
6、c
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);
}
这段程序的输出是
a)ab
b)cd
c)ef
d)gh
7、d
一个栈的输出队列是1,2,3,4,5,下列不可能输出的是
a)2 3 4 1 5
b)5 4 1 3 2
c)2 3 1 4 5
d)1 5 4 3 2
请选出其中一个并说明原因
8、b栈后进先出 先输出5,代表前面都没有出栈
#include<stdio. h>
main ()
{
int a, b, c, d;
a=10;
b=a++;
c=++a;
d=10*a++;
printf(b, c, d: %d, %d, %", b, c, d);
return ;
}
请写出代码的输出内容
9、b,c,d:10,12,120
main ()
{
int a[5]={1,2, 3, 4,5} ;
int *ptr=(int *)(&a+1);
printf("%d, %d",*(a+1),*(ptr-1));
}
请写出代码的输出内容
10、2 5
#define MAX 255
int main ()
{
unsigned char A[MAX],i;
for (i=0;i<=MAX;i++)
A[i]=i;
}
请问这个程序运行结果是什么?
11、0~254共255个元素,当A[255]=255是会发生越界访问
#include "stdio. h"
int main()
{
int a,b,c,abc=o;
a=b=c=40;
if(c)
{
int abc = 10;
abc =a*b+c++;
}
printf( "%d, %d",abc, c);
return 0;
}
以上代码运行结果是什么?
12、1640 41
数字推理
a)10,20,15,15,20,9,?
b)10,0,40,20,160,40,?
a)
b)
13、25 640
在不定义临时变量的情况下,完成Exchange函数以交换a,b的值
void Exchange(int *a,int *b)
{}
14、*a=*a+*b *b=*a-*b *a=*a-*b
unsigned char *p1;
unsigned long *p2;
p1=(unsigned char *)0x801000;
p2=(unsigned long *)0x810000;
请问
p1+5=
p2+5=
15、0x801028 0x810028
下面的程序使用专门的new_strcpy函数将字符串src_buff复制到字符串dest_buff中。为了不破坏复制源的内容,在对new_strcpy函数进行函数原型声明时,从a.到d.中选择const修饰符的位置
void new_strcpy(char * s1, char * s2);//*函数原型声明*/
int main(void)
{
char src_buff[]="ABC"; /*复制源*/
char dest_buff[5]; /*复制目的地*/
new_strcpy(dest_buff,src_buff);
:
:
}
16、c
下面的for语句运行后,sum的值时多少,请用10进制数回答
int sum=0;
int i;
for(i=1;i<10;i=i+1)
{
sum+=i;
}
sum=
17、45