/*
* test.c
*
* Created on: Jun 29, 2012
* Author: 孙旭
* 华清远见实验室
*/
/*******1********/
/*
#include<stdio.h> //找出一个字符串中的数字
#include<string.h>
int main()
{
char a[50];
char b[50];
char c[50];
char *p,*q;
p=a;
printf("please enter zi fu chuang\n");
gets(a);
int i,j,k=0,r=0,g=0,x;
i=strlen(a);
for(j=0;j<i;j++)
{if((*p-'0')<10)
{
if(g==1)
for(x=0;x<r;x++)
c[0]=b[x];
printf("%c",*p);
if(g==0)
b[r++]=*p;
p++;
k=1;
}
else if(*p>='a'&&*p<='z')
{
if(k==1)
printf(" ");
p++;
k=0;
g=1;
r=0;
}
}
return 0;
}
*/
/********2********/
/*
#include<stdio.h>
int main()
{
short x=12;
short *p1=&x; //*p2==p1==&x;
short **p2=&p1; //**P2==*p1==*&x==x
short ***p3=&p2; //***p3==**p2==*p1==x
printf("x=%d\n",x);
printf("*p1=%d\n",*p1);
printf("**P2=%d\n",**p2);
printf("***p3=%d\n",***p3);
char a[3][3]={1,2,3,4};
char *q1=a[0];
char **q=&q1;
printf("%d\n",*q1);
printf("%d",*q);
return 0;
}
*/
/********3********/
/*#include<stdio.h>
int main()
{
int x=2000;
short y=2888;
void *p1;
void *p2;
p1=&x;
p2=&y;
printf("%d\n",*(short *)p1); //2000 对于指针只能从高到低转化
printf("%d\n",*(int *)p2); //-2074080440 错误
int j=100;
int *p=&j;
printf("%d\n",*p); //100
return 0;
}*/
/*******4*******/
/*#include<stdio.h>
#include<stdlib.h>
int main()
{
short *p=(short *)malloc(2);
*p=100;
int *p1=(int *)malloc(sizeof(100));
*p1=23;
long *p2=(int *)malloc(1); //initialization from incompatible pointer type警告
*p2=1000;
printf("p=%d\n",*p);
printf("p1=%d\n",*p1);
printf("p2=%ld\n",*p2);
return 0;
}*/
/********5********/
/*
#include<stdlib.h>
#include<malloc.h>
int main()
{
int x=100;
int y=300;
const int *p; //不能使用*p改变他所指向的地址空间的值
p=&x;
x=200;
//*p=200; //错误
printf("*p=%d\n",*p); //200
p=&y;
printf("*p=%d\n",*p); //300
int x0=100;
int y0=300;
int const *q;
q=&x0;
printf("*q=%d\n",*q); //100
//*q=200; //错误
q=&y0;
printf("*q=%d\n",*q); //300
int s1=10;
int s2=20;
const int const *r;
r=&s1;
printf("*r=%d\n",*r); //10
p=&s2;
printf("*r=%d\n",*r); //20
return 0;
}
*/
/*******6*****/
/*
#include<stdio.h>
int main()
{
int x=20;
short y=28;
void *p1;
void *p2;
p1=&x;
p2=&y; //强制类型转化
printf("%d\n",*(short *)p1); //对与空类型指针只能由高到低转化 20
printf("%d\n",*(int *)p2); //不能由低向高转化 -2076180452
printf("%d\n",*(int *)p1); //20
printf("%d\n",*(short *)p2); //28
return 0;
}
*/
/*******7*****/
/*#include<stdio.h>
int main()
{
int x=22;
short y=33;
int p1=(short)y; //22
short p2=(int)x; //33
printf("%d\n",p1);
printf("%d\n",p2);
char a[]="1234\0567";
char b[]="1234567\0";
char c[]="1234567";
int i=sizeof(a);
int j=sizeof(b);
int k=sizeof(c);
printf("a=%d\n",i); //7
printf("b=%d\n",j); //9
printf("c=%d\n",k); //8
return 0;
}*/
/******8*******/
/*
#include<stdio.h>
int main()
{
int n=3,a[n]; //linux下数组内存分配是连续的,不会出现段错误
a[10]=10;
printf("%p\n",a); //0xbff06330
printf("%d\n",a[10]); //10
printf("%p\n",&a[10]); //0xbff06358
return 0;
}
*/
/*******9*****/
/*#include<stdio.h>
void fun(int a[][3])
{
char (*b)[3]=a;
b[0][0]=4;
}
int main()
{
int a[3][3]={0};
int i,j;
fun(a);
for(i=0;i<3;i++)
for(j=0;j<3;j++)
printf("%d ",a[i][j]);
return 0;
}*/