指针与指针内存储地址的关系

 1 #pragma region 指针++,指针内存储的地址增加m位,m根据存储内容的所占字节数的大小决定
 2 
 3 //这里通过一个顺序表来说明这一关系
 4 using namespace std;
 5 typedef int Status;
 6 typedef int ElemType;
 7 constexpr auto MAXSIZE = 100;// 最大长度;
 8 typedef struct SqList {
 9     ElemType *elem;//基地址
10     int length;//实际长度
11 }SqList;
12 
13 Status InitLsit_Sq(SqList &L) {//构造一个空的顺序表;&表示可以双向传递,实参把值传给形参,形实合一
14     L.elem = new ElemType[MAXSIZE];//为顺序表分配空间;new申请MAXSIZE个ElemType类型的空间
15     if (!L.elem) exit(OVERFLOW);//存储空间分配失败
16     L.length = 0;//空表长度为0
17     return 1;
18 }
19 
20 Status ListInsert_Sq(SqList &L, int i, ElemType e) {//有返回值
21     if (i<1 || i>L.length + 1) return 0;//判断插入位置是否合法
22     if (L.length == MAXSIZE) return 0;//判断存储空间是否已满
23     for (int j = L.length; j >= i - 1; j--) {//n到i元素向后移动
24         L.elem[j + 1] = L.elem[j];
25     }
26     L.elem[i - 1] = e;//e放置第i个位置
27     ++L.length;//表长+1
28     return 0;
29 }
30 
31 //根据元素内容e获取元素位置i
32 int LocateElem(SqList L, ElemType e) {
33     //查找不影响线性表长度和内容,实参内容值已被用户给出
34     for (int i = 0; i < L.length; i++)
35         if (L.elem[i] == e) return i + 1;
36     return 0;//当for语句表达式为假||if表达式为假时执行return 0
37 }
38 #pragma endregion
39 
40 int main()
41 {
42     SqList B;//B为创建顺序表的名称
43     InitLsit_Sq(B);
44     //顺序表B的值依次为2、3、4
45     ListInsert_Sq(B, 1, 2);
46     ListInsert_Sq(B, 2, 3);
47     ListInsert_Sq(B, 3, 4);
48     int *p1 = &(B.elem[0]);
49     int *p2 = &(B.elem[1]);
50     int *p3 = &(B.elem[2]);
51     int *p4 = p1++;//先赋值给p4,然后作p1++
52     printf("%0x, %0x, %d, %d\n", p1, &(B.elem[0]), *p1, (B.elem[0]));
53     printf("%0x, %0x, %d, %d\n", p2, &(B.elem[1]), *p2, (B.elem[1]));
54     printf("%0x, %0x, %d, %d\n", p3, &(B.elem[2]), *p3, (B.elem[2]));
55     printf("%0x, %0x, %d, %d\n", p4, &(B.elem[0]), *p4, (B.elem[0]));
56 }

 

转载于:https://www.cnblogs.com/Ecogolle/p/11009451.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值