锐捷+arris笔试题(2013)

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

#define ENDIANNESS(c) do{union{char str[4];int test;}endian_test={'l','?','?','b'};\
 c=(char)endian_test.test;\
}while(0);

void getstr(char **p)
{
	*p=(char *)malloc(100);
}

void change(int *str)
{
	str[0]=str[1];
}

main()
{
/*
	int d;
	char c[10];
	memset(c,'t',10);
	scanf("%d,%s",&d,c);
	printf("%s\n",c);
	printf("%s",isalnum(c[5])?"alpha":"not alpha");
*/

/*
	int a,b,d=25;
	a=d/10%9;
	b=a&&(-1);
	printf("%d,%d\n",a,b);
*/

/*
	int p[3]={11,12,13};
	int i=0;
	int j=0;
	while(i++<2)
	{
		if(p[i]%2)
		j+=p[i];
	}
	printf("%d",j);//13
*/

/*
	char a[]="a0\0a\3779\\\0";//\+数字 \x+数字分别表示八进制和十六进制的ascii码 若\后面数字超出\377(十进制的255)范围  编译不通过,并且当\后面的数字大于7时则另算一个字符
	printf("%s\n",a);
	printf("%d,%d",strlen(a),sizeof(a));//2,9
*/

/*
	#define ADD(a,b) a+b
	printf("%d\n",ADD(2,2)*2);//6
*/

/*
	int a[010];
	printf("%d\n",sizeof(a));//32
*/

/*

	int *test1,*test2,*test3,*test4;
	int a[3][2]={{10,20},{30,40},{50,60}},(*p1)[2],*p2,**p3,(*p4)[3][2];
	p1=a;
	p2=a;
	p3=a;
//	p4=&a;
	//各种打印50的方法
	printf("%d\n",*(*(p1+1)+2));//p1是数组指针,值为数组首地址,
	printf("%d\n",p2[4]);//
	printf("%d\n",p3[4]);
//	printf("%p\n",p4[0][0]);
//	printf("%p\n",p4[2][1]);
		
	/*a是数组名,绝对不是一个指针常量(区别于常量指针),等下回分解,没有分配存储单元,在代码段被初始化为立即数
	只是一个立即数,看你如何去理解这个立即数了*/




/*arris
	char* str=NULL;
	getstr(&str);
	strcpy(str,"Hello world");
	printf("%s",str);
*/

/*arris
	int aa[]={1,2,3,4,5,6,7,8,9,10};
	int i;
	for(i=1;i>0;i--)change(&aa[i]);
	printf("%d",aa[0]);
*/
/*arris
	enum ENUM{
		x1,
		y1,
		z1=1,
		x2,
		y2,
		z2,
	};
	enum ENUM ENUMA=x2;
	enum ENUM ENUMB=y2;
	enum ENUM ENUMC=z1;
	enum ENUM ENUMD=y1;
	printf("%d,%d,%d,%d",ENUMA,ENUMB,ENUMC,ENUMD);
*/

//大端小端
//char c;
//ENDIANNESS(c);
//printf("%c",c);
	int *temp;
	int a[2][3][2]={{{1,2},{3,4},{5,6}},{{7,8},{9,10},{11,12}}};
	int (*p)[3][2]=a;//p的值就是1所在的地址,p[0]的值还是1所在的地址,p[0][0]的值仍然是1所在的地址的值,p[0][0][0]是1,(到底什么是指向数组的指针呢?可以认为他是指向数组名的立即数的指针,*p就相当于(只是为了记忆)这个数组的数组名,我们知道一个N维数组名作为右值时是可以赋给一个N-1维数组的指针的,所以*p就是一个指向一维数组的指针,类似的**p就是一维数组的数组名(切记不能等同,为了记忆而已),***p就是第一个元素的值,*(p+1)相当于78|910|1112的数组名)
	printf("%d\n",*(*(*(p+0)+1)+0));
	temp=(int*) ( (int)(*(*(p+0)+1)) + 1 );
	printf("%d\n",p[0][0][0]);//1
	printf("%d\n",(*(p+1))[1][0]);//9
	printf("%x\n",*( (int*) ( (int)(*(*(p+0)+1)) + 1 ) ));//04000000
}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值