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

来源:互联网 发布:什么是模块化编程 编辑:程序博客网 时间:2024/06/07 01:38

一维数组

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

char arr[] = { 'a', 'b', 'c', 'd', 'e', 'f' };printf("%d\n", sizeof(arr));//整个数组                 6*1printf("%d\n", sizeof(arr + 0));//首元素地址            4printf("%d\n", sizeof(*arr));//首元素                   1printf("%d\n", sizeof(arr[1]));//第二个元素             1printf("%d\n", sizeof(&arr));//首元素地址               4printf("%d\n", sizeof(&arr + 1));//下一个数组的地址     4printf("%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个字节    4printf("%d\n", sizeof(p + 1));//b的地址          4printf("%d\n", sizeof(*p));//首元素              1printf("%d\n", sizeof(p[0]));//首元素            1printf("%d\n", sizeof(&p));//p的地址             4printf("%d\n", sizeof(&p + 1));//跳过整个字符串的地址   4printf("%d\n", sizeof(&p[0] + 1));//b的地址      4


char *p = "abcdef";printf("%d\n", strlen(p));//6printf("%d\n", strlen(p + 1));//b~f   5printf("%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*4printf("%d\n", sizeof(a[0][0]));//第一个元素   4printf("%d\n", sizeof(a[0]));//第一行元素      4*4printf("%d\n", sizeof(a[0] + 1));//第一行第二个元素  4printf("%d\n", sizeof(a + 1));//降维,第二行第一个元素地址  4printf("%d\n", sizeof(&a[0] + 1));//第二行地址      4printf("%d\n", sizeof(*a));//降维,第一行元素       4*4printf("%d\n", sizeof(a[3]));//降维                 16


阅读全文
1 0
原创粉丝点击