加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

与C中的指针混淆了

发布时间:2020-12-16 10:41:15 所属栏目:百科 来源:网络整理
导读:我刚刚在我的教科书中找到指针,但它解释得不够好,所以我需要一些帮助. 我知道什么是指针,他们做了什么.例如,我非常了解以下示例: #include stdio.hint main (){ int num = 5; int *point; point = num; *point = 8; printf("%d %d",num,*point); return 0;}
我刚刚在我的教科书中找到指针,但它解释得不够好,所以我需要一些帮助.

我知道什么是指针,他们做了什么.例如,我非常了解以下示例:

#include <stdio.h>

int main ()
{
    int num = 5;
    int *point;

    point = &num;

    *point = 8;

    printf("%d %d",num,*point);

    return 0;
}

point指向num(将num的地址存储为其值).然后我解除引用点来改变num的原始值.

现在考虑相同示例的明显修改版本:

#include <stdio.h>

int main ()
{
    int num = 5;
    int *point;

    point = 8;

    printf("point: %dn",point);

    printf("sum (%d) = num (%d)+ point (%d)",num+point,point);

    return 0;
}

我有一些问题:

1-为什么甚至可以为指针(点)分配正常值(8)?是不应该只将地址存储到其他东西的指针?第8行发生了什么?

2-我编译了代码,第二个printf显示:
sum(28)= num(5)point(8)
为什么总和等于28? 5 8是13.发生了什么事?

解决方法

您可以指向内存地址8(或0x00000008).它相当于point =(int *)8;我得到一个友好的<无法读取内存>错误,因为我正在使用一个c,我认为它保护我免受我的愚蠢.

为什么5 8 = 28?如果向类型为T的指针添加数字n,则将此指针移动到类型为T的n个元素.您的机器正在处理32位整数,其大小为4字节,因此8(5 * 4)= 28.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读