*****************************************************************
char 类型的数组(c语言中是没有字符串的)
char name[20]是数组还是字符串?
char name[20]是 char 数组
赋值方式1:
char name[20]="abcd_1234";(或者char name[]="abcd_1234";)(这样子赋值有\0的存在)
char time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 0};(这样子没有\0的存在)
赋值方式2:
char name[20];
strcpy(name,"abcd_1234");
赋值方式3:
char name[20];
for (i=0;i<4;i++) name[i] = ‘a‘ + i;
name[4]=‘_‘;
for (i=5;i<8;i++) name[i] = ‘1‘ + i -5;
语句:
printf("%s",name);
*****************************************************************
int  类型的数组
 
  int a[3];
  赋值方式1: int a[3]={4,5,6};
  赋值方式2:  int a[3];
              for(i=0;i<3;i++)
               {
                   a[i]=‘a‘+i;
               }
*****************************************************************
char *类型的数组
char *time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 0};这样子赋值就错了。地址不能给,只能分配获取。
或者用strcpy函数赋值。
strtok 函数必须用char *p[4];去接,而且注意加数值注意加1;
  char s[] = "ledon      1 3";
	char *p[4];
	int i;
	p[0] = strtok(s, " ");
	for(i=1; p[i-1]!=NULL; i++)
	{
		p[i] = strtok(NULL, " ");
	}
	for(i=0; p[i]!=NULL; i++)
	{
		printf("%s\n", p[i]);
	}
///////此处的每一个p[i]都代表一个字符串的首地址。
char  time[9];time只能代表本字符串的首地址(time[9], 前边的char代表里面的数据类型,如果是char *代表是数据是地址,字符串的地址),
char *time[9]; time[i]代表每一个字符串的地址。
char name[20]="abcd_1234";
char name[]="abcd_1234";除了这样赋值可以不给出大小外,其他方式必须给出大小,定义数组必须给出大小.
*********************************************************************************************************
char time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 0};(这样子没有\0的存在)
rtc_set(time);
void rtc_init(int *t)
{
	RTC.RTCCON = 0x1;
	RTC.BCDYEAR = t[0];
	RTC.BCDMON = t[1];
	RTC.BCDDATE = t[2];
	RTC.BCDDAY = t[3];
	RTC.BCDHOUR = t[4];
	RTC.BCDMIN = t[5];
	RTC.BCDSEC = t[6];
	RTC.RTCCON = 0x0;
}
原文:http://www.cnblogs.com/coding4/p/5604746.html