指针的笔试面试经典题目

//对下列指针题目能有很好的理解,将会是你掌握指针的关键;

1.写出下面程序的结果

char *c[] = { "ENTER", "NEW", "POINT", "FIRST" }; 
char **cp[] = { c+3, c+2, c+1, c }; 
char ***cpp = cp; 




int main(void)

printf("%s\n", **++cpp); 
printf("%s\n", *--*++cpp+3); 
printf("%s\n", *cpp[-2]+3); 
printf("%s\n", cpp[-1][-1]+1); 
return 0;
}


2.int main()  
{  
    char *str[]={"welcome","to","Fortemedia","Nanjing"};  
    char**p=str+1;  
    str[0]=(*p++)+2;  
    str[1]=*(p+1);  
    str[2]=p[1]+3;  
    str[3]=p[0]+(str[2]-str[1]);  
    printf("%s\n",str[0]);
printf("%s\n",str[1]);
printf("%s\n",str[2]);
printf("%s\n",str[3]);
    return 0;  
}  
3.分析程序


#include<stdio.h> 
int main() 
{  
char a[20]="You_are_a_girl";
char *p=a; 
char **ptr=&p;
//printf("p=%d\n",p);
//printf("ptr=%d\n",ptr); 
//printf("*ptr=%d\n",*ptr); 
printf("**ptr=%c\n",**ptr);
ptr++;  
//printf("ptr=%d\n",ptr);
//printf("*ptr=%d\n",*ptr);
printf("**ptr=%c\n",**ptr); 
}


4.分析程序:


#include<stdio.h>
int inc(int a)
{
    return(++a);
}
int multi(int*a,int*b,int*c)
{
    return(*c=*a**b);//
}
typedef int(FUNC1)(int in);
typedef int(FUNC2) (int*,int*,int*);


void show(FUNC2 fun,int arg1, int*arg2)
{
    int (*p)(int)=&inc;
    int temp =p(arg1);//11
    fun(&temp,&arg1, arg2);
    printf("%d\n",*arg2);
}


main()
{
    int a;
    show(multi,10,&a);
    return 0;
}


5.下列定义的含义
(1)int  *p[3];                                
(2)int   (*p)[3];                                
(3)int  *p(int);                                
(4)int  (*p)(int);                                
(5)int  *(*p)(int);                                
(6)int (*p[3])(int);                                
(7)int  *(*p[3])(int);                                
(8)void  *p;  




6.以下代码是把一个字符串倒序,如“abcd”倒序后变为“dcba”。请找出代码中的所有错误 。
#include"string.h"
main()
{
    char*src="hello,world";
    char* dest=NULL;
    int len=strlen(src);
    dest=(char*)malloc(len);
    char* d=dest;
    char* s=src[len];
    while(len--!=0) 
        d++=s--;
    printf("%s",dest);
    return 0;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值