您的位置:首页 > 其它

指针的相关运算,包括一维数组、二维数组、字符数组的sizeof、strlen运算

2017-07-18 21:28 561 查看
一维数组

int a[] = { 1, 2, 3, 4 };
printf("%d\n", sizeof(a));//整个数组 4*4
printf("%d\n", sizeof(a + 0));//首元素地址 4
printf("%d\n", sizeof(*a));//首元素 4
printf("%d\n", sizeof(a + 1));//第二个元素地址 4
printf("%d\n", sizeof(a[1]));//第二个元素 4
printf("%d\n", sizeof(&a));//数组地址 4
printf("%d\n", sizeof(&a + 1));//下一个数组地址 4
printf("%d\n", sizeof(&a[0]));//第一个元素地址 4
printf("%d\n", sizeof(&a[0] + 1));//第二个元素地址4
printf("%d\n", sizeof(*&a));//整个数组 4*4字符数组
char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
printf("%d\n", sizeof(arr));//整个数组 6*1
printf("%d\n", sizeof(arr + 0));//首元素地址 4
printf("%d\n", sizeof(*arr));//首元素 1
printf("%d\n", sizeof(arr[1]));//第二个元素 1
printf("%d\n", sizeof(&arr));//首元素地址 4
printf("%d\n", sizeof(&arr + 1));//下一个数组的地址 4
printf("%d\n", sizeof(&arr[0] + 1));//第二个元素的地址 4


char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };
printf("%d\n", strlen(arr));//随机值
printf("%d\n", strlen(arr + 0));//随机值
printf("%d\n", strlen(*arr));//97作为地址不可以访问
printf("%d\n", strlen(arr[1]));//98作为地址不可以访问
printf("%d\n", strlen(&arr));//随机值
printf("%d\n", strlen(&arr + 1));//随机值
printf("%d\n", strlen(&arr[0] + 1))//随机值
指针
char *p = "abcdef";//p中只存a的地址
printf("%d\n", sizeof(p));//字符指针,4个字节 4
printf("%d\n", sizeof(p + 1));//b的地址 4
printf("%d\n", sizeof(*p));//首元素 1
printf("%d\n", sizeof(p[0]));//首元素 1
printf("%d\n", sizeof(&p));//p的地址 4
printf("%d\n", sizeof(&p + 1));//跳过整个字符串的地址 4
printf("%d\n", sizeof(&p[0] + 1));//b的地址 4

char *p = "abcdef";
printf("%d\n", strlen(p));//6
printf("%d\n", strlen(p + 1));//b~f   5
printf("%d\n", strlen(*p));//错误
printf("%d\n", strlen(p[0]));//错误
printf("%d\n", strlen(&p));//随机值
printf("%d\n", strlen(&p + 1));//随机值
printf("%d\n", strlen(&p[0] + 1));//b~f   5

二维数组
int a[3][4] = { 0 };
printf("%d\n", sizeof(a));//整个数组 12*4
printf("%d\n", sizeof(a[0][0]));//第一个元素 4
printf("%d\n", sizeof(a[0]));//第一行元素 4*4
printf("%d\n", sizeof(a[0] + 1));//第一行第二个元素 4
printf("%d\n", sizeof(a + 1));//降维,第二行第一个元素地址 4
printf("%d\n", sizeof(&a[0] + 1));//第二行地址 4
printf("%d\n", sizeof(*a));//降维,第一行元素 4*4
printf("%d\n", sizeof(a[3]));//降维 16
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: