char数组

*****************************************************************
char 类型的数组(c语言中是没有字符串的)
char name[20]是数组还是字符串?
char name[20]是 char 数组


赋值方式1:
char name[20]="abcd_1234";(或者char name[]="abcd_1234";)(这样子赋值有的存在)
char time[9] = {0, 0, 0, 1, 0, 0, 1, 1, 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 ", 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};(这样子没有的存在)
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;
}

原文地址:https://www.cnblogs.com/coding4/p/5604746.html