《数组指针 & 指针数组》*

指针

在64位操作系统中 站8个字节     在32位操作系统中站4个字节

int* p=&num                     在其中p为指针(变量) [别名]      int* 为指针类型

    **pp <----------->**&p<---------->*p <----------->*&num <--------->num

(二级指针)                                                        *&可消   

变量类型    即为去掉变量名后剩下的部分。

指针数组:

它是一个数组,其中的元素都是指针。例如 int *arr[5] 表示一个有 5 个元素,每个元素都是指向整数的指针的数组。

例:

int* p_num={p_a,p_b,p_c};

数组指针:

它是一个指针,指向一个数组。比如 int (*ptr)[5] 就是一个指向包含 5 个整数的数组的指针。

指针可以进行 + - 一个整数a  表示偏移 a 个元素

num[a]<------------>*(&num[a])<----------------->*(num+a)         在其中的 * 为解引用符

&num[0]<--------------------------->num                    首元素的地址

int (*p_num)[6]=&num;

sizeof(num)

                     ===============》表示整个数组

&num

num[1]      第二行首元素地址

num          首元素地址

&num[0]+1<------------------------>num[1]

num+1                                       移动到下一个数组

示例:

​
#include <stdio.h>
int main()
{
        int score[3][3]={{1,2,3},{4,5,6},{7,8,9}};
        int (*p_score)[3][3]=&score;
        printf("score[3][2]=%d\n",*(score[2]+1));
        printf("score[3][2]=%d\n",*(*(score+2)+1));
        printf("score[3][2]=%d\n",score[2][1]);
        printf("score[2][3]=%d\n",*(&score[1][0]+2));
        printf("score[2][3]=%d\n",*(*(&score[0]+1)+2));
        printf("score[2][3]=%d\n",*(*(&score[1])+2));
        return 0;
}


运行结果:

score[3][2]=8
score[3][2]=8
score[3][2]=8
score[2][3]=6
score[2][3]=6
score[2][3]=6


小技巧:在某些情况下   可以将&看作一次积分 将*看做一次求导
​

大小端:

例:0x11223344

大端(高位)   44  33  22  11

小端 (高位)  11  22  33  44 (一般为小端)

  • 6
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值