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

/*
 * test.c
 *
 *  Created on: Jul 6, 2012
 *      Author: 孙旭
 *      华请远见实验室
 */
/*********1**********/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
 int i=5;
 int j=2;
 int b[i+j];           //={1,2,3,4};直接赋值出现段错误   可以使用变量/表达式作为数组的下标
 b[0]=1;b[1]=2;b[2]=3;b[3]=4;b[4]=5;   //可以单独赋值
 for(i=0;i<5;i++)
 printf("%d  ",b[i]);

 char a[4];
 a[0]=2;
 a[4]=3;
 a[8]=4;
 printf("%d ",a[0]);   //结果2
 printf("%d ",a[4]);   //3
 printf("%d ",a[8]);   //4        没出现错误和警告和段错误
 printf("\n");

 printf("%p  ",&a[0]);   //0xbfef357c   都分配了地址空间且是连续的地址空间
 printf("%p  ",&a[4]);   //0xbfef3580   都相差为4
 printf("%p  ",&a[8]);   //0xbfef3584
}

/*******2*******/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
 int a[5]={1,2,3};
 char b[5]={'a','b','c'};
 int i;
 printf("%d\n",a[4]);  //打印0   a[5] =163559308一个未知的地址空间
 for(i=0;i<5;i++)
 {
  printf("%d\n",a[i]);
  printf("%d  ",b[i]);   //b[3]=0 b[4]=0
 }
 return 0;
}

/*******3*******/
#include<stdio.h>
int main()
{
 char a[100][100]={12,32};
 int i=0;
 int j=0;
 for(;i<100;i++)
  for(;j<100;j++)
  printf("%d\n",&a[i][j]);    //对于数组都是分配的连续的存储空间
 return 0;
}

/******4********/
#include<stdio.h>            //二维数组的使用方法一
#include<string.h>
int fun(int b[][2],int num)  //必须定义b[][2]否则出现数组未指明的数组
{
 printf("b[1]=%d ",&b[0][1]);
 int sum=0;
 int i=0,j=0;
 for(i=0;i<2;i++)
  for(j=0;j<2;j++)
   sum+=b[i][j];
 return sum;
}
int main()
{
 int a[2][2]={{1,2},{3,4}};
 printf("a[1]=%d ",&a[0][1]);
 int num=2;
 int k=fun(a[0],num);
 printf("%d",k);
 return 0;
}

/*******5********/
#include<stdio.h>
#include<string.h>            //二维数组的使用方法二
int fun(int (*b)[2],int num)  //必须指明(*b)[]的长度 否则出现段错误
{
 int sum=0;
 int i;
 int j;
 for(i=0;i<2;i++)
  for(j=0;j<2;j++)
 sum+=b[i][j];
 return sum;
}
int main()
{
 int a[2][2]={{1,2},{3,4}};
 int num=2;
 int k=fun(a,num);
 printf("%d",k);
 return 0;
}

/*******6********/
#include<stdio.h>
int main()
{
 int i=0;
 int j=0;
 int a[2][2]={{12,32},{34,45}};
 printf("%d \n",sizeof(a));    //16
 for(;i<2;i++)
  for(j=0;j<2;j++)            //不能这样用for(;j<2;j++);第二次执行时j的值变为2了
   printf("%d ",a[i][j]);
 return 0;
}

/*******7********/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
int main()
{
 char  *p="abcd";  //abcd存放在常量区,不能修改他的值 只能使用间接的方法修改
 char a[10];
 strcpy(a,p);
 a[1]='x';
 p=a;
 puts(p);
 return 0;
}

/********8********/
#include<stdio.h>
int main()
{
 char *p1,*p2;
 {
  char* pchar;
  char charar[] = "你好,世界";
  pchar = "Hello,World!";
  p1 = pchar;
  p2 = charar;
  printf(pchar);  //pchar charar的作用域只是在这个大括号里面在括号外面不能使用
  printf(charar);
 }
 //printf(pchar);    //错误
 //printf(charar);   //错误
 printf(p1);
 printf(p2);
 return 0;

}

/*********9*********/
#include<stdio.h>
int main()
{
 int a[]={1,2,3,4};
 int i=0;
 for(;i<4;i++)
  printf("%d ",a[i]);
 return 0;
}

/********10*********/
#include<stdio.h>
int main()
{
 char *p,*q;
 char a[]="hello";
 q=p=a;
 p++;
 printf(q);      //打印hello
 printf("\n");   //ello
 printf(p);
}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值