• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >编程问答 > 怎么输入指针的值?即输入指针所指区域的地址。

怎么输入指针的值?即输入指针所指区域的地址。

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-07

佚名通过本文主要向大家介绍了吾王剑锋所指,楼堂馆所指什么,能指与所指,剑锋所指所向披靡,剑锋所指等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题:怎么输入指针的值?即输入指针所指区域的地址。
描述:

#include <iostream>
using namespace std;
int main()
{
    int *i;
    i=(int*)malloc(sizeof(int));
    ...  
    //用cin或scanf输入i的值,即输入给定的地址
    ...
    return 0;
}

试过用cin>>i或scanf("%d",&i)都不行,应该怎样写?


解决方案1:

翻翻cin的手册不就行了吗?

cin >> *i;

解决方案2:

问题不够清晰。
你要给i赋值吗?你这样做了会使你malloc的地址,无法再被引用到,这会内存泄露的。就是我们平时说的野指针。

如果你是想让用户输入的内容直接存到这段内存中,那么scanf("%d",i),因为i本来就是个地址,这里不用&i.

如果你是想做在用户指定的地址申请一段内存,那么可以告诉你没有这种需求的。我们用的地址都是虚拟地址,是系统分配的,不是随便哪个地址都能用的。但是c语言很灵活,他并没有从语言层面限制你,那么非这样做的话会有以下可能:
1.这段内存操作系统会保护的,直接报内存错误,程序崩溃。
2.你不知道改了哪里的内存,反正读写正常,而且运行也没错,但是这种情况更危险,这是颗定时炸弹,你永远不知道什么时候这段被踩的内存会错乱,而且可能连环反应,整个调用栈被踩的稀巴烂,定位都没法定位。大型程序都是这么崩溃的。

解决方案3:

输入数字,然后强制转换(

解决方案4:

scanf没有输入指针类型的方法,因此输入数字再转换成地址。测试代码和结果如下(8866的十六进制表示为22A2):

include<stdio.h>

int main()
{

int *i;
int i_temp;
i=(int*)malloc(sizeof(int));
printf("i的地址为:%p\n",i);
printf("请输入i的地址:");
scanf("%d",&i_temp);
i=(int*)i_temp;
printf("赋值后i的地址为:%p\n",i);

return 0;
}


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • 怎么输入指针的值?即输入指针所指区域的地址。

相关文章

  • 2017-06-07 (python)如何让列表所有元素首字母变大写?
  • 2017-06-07 (python)请问matplotlibpyplotsave的路径如何更改
  • 2017-06-07 请问django和flask在pythonweb开发中哪个用的多?
  • 2017-06-07 scrapy实现登录后再爬取数据,配置问题?
  • 2017-06-07 开源edx不能发送邮件
  • 2017-06-07 Laravel这种关联模型怎么做?
  • 2017-06-07 JBPM与spring和hibernate集成使用出现的问题
  • 2017-06-07 VS2008智能提示laraveldb智能提示怎么弄呢?
  • 2017-06-07 Pythonrequests关于3次身份认证怎么写
  • 2017-06-07 一段python的正则

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • pythonflaskblueprint这个问题该怎么解决
    • JBOSS在一台机上开多个实例的问题和在一个JBOSS上部署多个项目的问题谢谢
    • vue在vue中使用qiniu上传组件
    • 不同IP对一个php上千万次请求,是cc攻击吗?怎么防?
    • (VFP)关于日期控件
    • python处理中文
    • flaskreturn的问题
    • laravel中导入excel数据量很大的情况下处理重复数据时如果做最好
    • Python+uWSGI+nginx报错:Permissiondenied
    • 一个简单的正则表达式问题

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有