指针4
1.数组与指针笔试题型
//1.一维数组
int main1()
{int a[] = { 1,2,3,4 };printf("%d\n", sizeof(a)); //16 特例: sizeof(数组名) 表示数组的空间大小printf("%d\n", sizeof(a + 0)); //第一个元素地址: 4(32位系统)/8(64位系统)printf("%d\n", sizeof(*a));//4printf("%d\n", sizeof(a + 1));//第二个元素地址:4/8printf("%d\n", sizeof(a[1]));//4printf("%d\n", sizeof(&a));//数组的地址: 4/8printf("%d\n", sizeof(*&a));//*&碰面会抵消也就是 *&a=a sizeof(*&a)=sizeof(a)=16printf("%d\n", sizeof(&a + 1));//跳过该数组 下一数组的地址 4/8printf("%d\n", sizeof(&a[0]));//第一个元素地址:4/8printf("%d\n", sizeof(&a[0] + 1));//第二个元素地址:4/8return 0;
}//2.字符数组
//(1)
int main2()
{char arr[] = { 'a','b','c','d','e','f' };printf("%d\n", sizeof(arr));// 6 printf("%d\n", sizeof(arr + 0));//第一个元素地址: 4(32位系统)/8(64位系统)printf("%d\n", sizeof(*arr));//首元素*arr=arr[0] 1printf("%d\n", sizeof(arr[1]));//第二个元素 1printf("%d\n", sizeof(&arr));//数组地址: 4(32位系统)/8(64位系统)printf("%d\n", sizeof(&arr + 1));//跳过该数组 下一数组的地址 4/8printf("%d\n", sizeof(&arr[0] + 1));//第二个元素地址: 4(32位系统)/8(64位系统)return 0;
}(2)
int main3()
{char arr[] = { 'a','b','c','d','e','f' };printf("%d\n", strlen(arr));//没有\0,随机值printf("%d\n", strlen(arr + 0));//没有\0,随机值printf("%d\n", strlen(*arr));//第一个元素 'a'==97(ASCII值)崩溃printf("%d\n", strl