华清远见c语言学习笔记六

/*
 * 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;
}*/

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值