对应的视屏链接:鲍松山的个人空间_哔哩哔哩_bilibili
目录
1、用变量a给出下面的定义
a) 一个整型数
b) 一个指向整型数的指针
c) 一个指向指针的指针,它指向的指针是指向一个整型数
d) 一个有10个整型数的数组
e) 一个有10个指针的数组,该指针是指向一个整型数
f) 一个指向有10个整型数的数组的指针
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数
2、一维数组操作练习
int main()
{
int ar[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
printf("%d\n", sizeof(ar));
printf("%d\n", sizeof(ar + 0));
printf("%d\n", sizeof(*ar));
printf("%d\n", sizeof(ar + 1));
printf("%d\n", sizeof(ar[1]));
printf("%d\n", sizeof(&ar));
printf("%d\n", sizeof(*&ar));
printf("%d\n", sizeof(&ar + 1));
printf("%d\n", sizeof(&ar[0]));
printf("%d\n", sizeof(&ar[0] + 1));
return 0;
}
3、二维数组操作练习
int main()
{
int a[10][10] = { 0 };
printf("%d\n", sizeof(a));
printf("%d\n", sizeof(a[0][0]));
printf("%d\n", sizeof(a[0]));
printf("%d\n", sizeof(a[0] + 1));
printf("%d\n", sizeof(*(a[0] + 1)));
printf("%d\n", sizeof(a + 1));
printf("%d\n", sizeof(*(a + 1)));
printf("%d\n", sizeof(&a[0] + 1));
printf("%d\n", sizeof(*(&a[0] + 1)));
printf("%d\n", sizeof(*a));
printf("%d\n", sizeof(a[3]));
return 0;
}
4、写出下面程序运行的答案
int main()
{
int ar[5] = { 10, 20, 30, 40, 50 };
int *ptr = (int *)(&ar + 1);
printf( "%d,%d\n", *(ar + 1), *(ptr - 1));
return 0;
}
int main()
{
int ar[5] = { 10, 20, 30, 40, 50};
int *ptr1 = (int *)(&ar + 1);
int *ptr2 = (int *)((int)ar + 1);
printf( "%x, %x\n", ptr1[-1], *ptr2);
return 0;
}
int main(void)
{
int ar[5] = { 0, 1, 2, 3, 4 };
int *p = &ar[0];
p++;
printf("%d ", *p);
p = p + 3;
printf("%d ", *p);
p--;
printf("%d ", *p);
p = p-3;
printf("%d ", *p);
return 0;
}
int main()
{
int a[3][2] = { (0, 1), (2, 3), (4, 5) };
int *p;
p = a[0];
printf( "%d\n", p[0]);
return 0;
}
int main()
{
int ar[2][5] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
int *ptr1 = (int *)(&ar + 1);
int *ptr2 = (int *)(*(ar + 1));
printf( "%d,%d\n", *(ptr1 - 1), *(ptr2 - 1));
return 0;
}
int main()
{
char *str[] = {"work","at","ablone"};
char **pstr = str;
pstr++;
printf("%s\n", *pstr);
return 0;
}