C用语言中的数组与指针

来源:互联网 发布:极简装修 知乎 编辑:程序博客网 时间:2024/04/30 09:25


在C程序语言中 数组,指针和字符串常常被联系在一起

此处将讨论其三者之间的关系


先看下数组的声明

int b[] = {1,2,3,4,5,8,4,2};

取指针:

如果取其中下标为2的值

b[2]

如果取下标为2的值的指针

&b[2]

例子:

[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
    int b[] = {1,2,3,4,5,8,4,2};
    int *x, *y;
    
    x = &b[3];
    y = &b[4];
    printf("*x = %p\t||\tx = %d\n", x, *x);
    printf("*y = %p\t||\ty = %d\n", y, *y);
}

[root@CWG hc]# ./szzz
*x = 0x7fff2a230a0c    ||    x = 4
*y = 0x7fff2a230a10    ||    y = 5


按指针偏移量取值

指针和数组的关系:

&b[0]  为数组b的第一个值的指针,也是b数组的初始指针

b数组的初始指针也是b数组的指针

例子:

[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
    int b[] = {1,2,3,4,5,8,4,2};
    int *x, *y;
    
    x = &b[0];
    printf("x = %p\t||\t*x = %d\n", x, *x);
    printf("b = %p\t||\t*b = %d\n", b, *b);
}

[root@CWG hc]# ./szzz
x = 0x7fff71d67810    ||    *x = 1
b = 0x7fff71d67810    ||    *b = 1


偏移量:

[root@CWG hc]# cat szzz.c
#include <stdio.h>
main()
{
    int b[] = {1,2,3,4,5,8,4,2};
    int *x, *y;
    
    x = &b[4];                   //x是数组b的下标为4的值的指针
    printf("x = %p\t||\t*x = %d\n", x, *x);
    printf("b = %p\t||\t*b = %d\n", b+4, *(b+4));           //b+4,b是数组b的初始指针 b+4,则是b偏移4个单位, 也就是数组b的下标为4的数值的指针
}

[root@CWG hc]# ./szzz
x = 0x7fff7fa5ede0    ||    *x = 5               //b数组的第4个值的指针和指针所指的值
b = 0x7fff7fa5ede0    ||    *b = 5               //和x指针的结果一模一样


数组的指针偏移量,有数组的初始指针也就是数组的指针开始,下标增长1,则指针偏移+1,下标-1,则指针偏移同样-1

在所有类型的数组中都遵循这个规律!!!


################################

迷途小运维学习C程序语言随笔

作者:john

转载请注明出处

原创粉丝点击