目录
一、数组
二、指针
一、数组
数组由类型和元素的数量组成
<类型> 数组名 [元素数量]------元素数量在[]之间,它必须是大于0的整数常量表达式
int main()
{
int ar[] = {12,23,34,45,56,67};
sizeof(ar);//sizeof (int)*6-----计算得到数组所占字节大小
sizeof(ar[0]);
int n = sizeof (ar) / sizeof (ar[0]);//数组的元素可以通过sizeof计算得到
}
一维数组的使用
一维数组的应用示例
判断闰年,判断年月天,计算总天数
bool Is_leap(int year)
{
return (year % 4 == 0 && year % 100 != 0 || year % 400 == 0);
}
//
int Get_YM_Day(int year, int month)
{
int ar[] = { 29,31,28,31,30,31,30,31,31,30,31,30,31 };
if (2 == month && Is_leap(year))
{
month = 0;
}
return ar[month];
}
int Get_YMD_Total(int year, int month, int day)
{
if (year < 1) return -1;
if (month < 1 || month>12) return -2;
if (day<1 || day > Get_YM_Day(year, month)) return -3;
int sum = 0;
for (int i = 1; i < month; i++)
{
sum += Get_YM_Day(year,i);
}
sum = sum + day;
return sum;
}
int main()
{
int year, month, day;
int sum = 0;
scanf_s("%d %d %d", &year, &month, &day);
sum = Get_YMD_Total(year, month, day);
switch(sum)
{
case -1:printf("year error\n"); break;
case -2:printf("month error\n"); break;
case -3:printf("day error\n"); break;
default :
printf("%d\n", sum); break;
}
printf("\n");
return 0;
}
如果希望数组的下标从1到10而不是从0到9,该怎么做?
**答:**可以浪费一个空间,0,12,23,34,45----下标为0的数组第一个值可以放0.
二、指针
指针有三种类型:野指针,空指针,失效指针
指针的大小在32位平台是4个字节,在64位平台是8个字节,存储方式采取小端存放。
int *ip = nullptr; int *s = &a;------不要定义野指针。
定义指针变量时,类型对指针变量起到俩个作用。
1)解析存储单元的大小。
2)指针变量加1的能力。
指针不可以相加,但可以指针相减
void fun(int* p)
{
int a = 200;
*p = 100;
p = &a;
}
int main()
{
int x = 0;
int* ip = &x;
fun(ip);
printf("%d %d\n", x, *ip);
return 0;
}
打印结果为:100 100