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