##如何用c语言代码查看系统的大小端
大端方式将高位存放在低地址,小端方式将低位存放在高地址。采用大端方式 进行数据存放符合人类的正常思维,而采用小端方式进行数据存放利于计算机处理
如果将一个16位的整数0x1234存放到一个短整型变量(short:占两字节)中。这个短整型变量在内存中的存储在大小端模式由下表所示。
地址偏移 |
大端模式 |
小端模式 |
0x00 |
12(OP0) |
34(OP1) |
0x01 |
34(OP1) |
12(OP0) |
#include<stdio.h>
int main()
{
int short x=0x1122;
char x1,x2;
x1=((char *)&x)[0];
x2=((char *)&x)[1];
printf("%x,%x",x2,x2);
return 0;
}
结果为x1=22,x2=11,的系统为小端,现在的系统大多为小端。
还可以用结构体检测
#include<stdio.h>
int main()
{
union check
{
int i;
char b;
}c;
c.i=1;
printf("%d\n",c.b);
}
结果为1的为小端。
作业:
1
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
int a[4]={1,2,3,4};
int* pa=(int*)((int*)a+1);
printf("%d\n",*pa);
return 0;
}
的结果为2,因为此代码为把数组的首地址加1所以*pa就指向了数组的第二个数。
2
回文字符串的检测
#include<stdio.h>
#include<string.h>
int huiwen(char ch[])
{
int a=strlen(ch),b=0;
int c=1;
for(b=0;b<a/2;b++)
{
if(ch[b]!=ch[a-b-1]){
c=0;
break;
}
}
return c;
}
int main()
{
char ch[]="abcdefhjfedcba";
printf("%d\n",huiwen(ch));
return 0;
}
3
字符串中的字母数字的计数
#include<stdio.h>
#include<string.h>
void count(char ch[])
{
int a=strlen(ch);
int i=0,big=0,sml=0,spe=0,num=0;
for(i=0;i<a;i++)
{
if(ch[i]<=‘z‘&&ch[i]>=‘a‘)
sml++;
if(ch[i]<=‘Z‘&&ch[i]>=‘A‘)
big++;
if(ch[i]<=‘9‘&&ch[i]>=‘0‘)
num++;
}
spe=a-big-sml-num;
printf("大写字母有:%d\n",big);
printf("小写字母有:%d\n",sml);
printf("数字有:%d\n",num);
printf("特殊字符有:%d\n",spe);
}
int main()
{
char ch[]="hello1A world.";
count(ch);
return 0;
}