与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 = # *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显示: 解决方法
您可以指向内存地址8(或0x00000008).它相当于point =(int *)8;我得到一个友好的<无法读取内存>错误,因为我正在使用一个c,我认为它保护我免受我的愚蠢.
为什么5 8 = 28?如果向类型为T的指针添加数字n,则将此指针移动到类型为T的n个元素.您的机器正在处理32位整数,其大小为4字节,因此8(5 * 4)= 28. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |