int *a,int b,a和&b的区别;sscanf函数问题

秋的红果实 2017-07-28 10:34:16
为什么写成下面形式就不行

char *c = "123.5";
int *integer = NULL;
sscanf(c, "%d", integer);
cout << *integer << endl;
system("pause");



而写成这样就可以

char *c = "123.5";
int integer;
sscanf(c, "%d", &integer);
cout << integer << endl;
system("pause");



指针和&变量,不都是表示地址吗?有什么区别
...全文
188 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2017-07-28
  • 打赏
  • 举报
回复
http://edu.csdn.net/course/detail/2344 C语言指针与汇编内存地址-一.代码要素 http://edu.csdn.net/course/detail/2455 C语言指针与汇编内存地址-二.函数 http://edu.csdn.net/course/detail/2516 C语言指针与汇编内存地址-三.数组和二维数组 http://edu.csdn.net/course/detail/2517 C语言指针与汇编内存地址-四.三维数组
唯恐天下不乱 2017-07-28
  • 打赏
  • 举报
回复
引用 3 楼 From_TaiWan 的回复:
[quote=引用 2 楼 shit_moment 的回复:] c语言的时代,没有引用。 必须传入指针才能改变参数的值
我第一种写法,传入的就是指针啊[/quote] 看错了,惭愧, 指针必须要指向一个内存,才能写。 不然不能用的 int *integer = new int; 或者 int mem; int *integer = *mem;
kakabulusi 2017-07-28
  • 打赏
  • 举报
回复
只是一个指针,没有具体的指向实体,所以不i能直接写入。 必须new一下,让指针指向一个int型实体,才能进行赋值操作。
秋的红果实 2017-07-28
  • 打赏
  • 举报
回复
引用 2 楼 shit_moment 的回复:
c语言的时代,没有引用。 必须传入指针才能改变参数的值
我第一种写法,传入的就是指针啊
唯恐天下不乱 2017-07-28
  • 打赏
  • 举报
回复
c语言的时代,没有引用。 必须传入指针才能改变参数的值
秋的红果实 2017-07-28
  • 打赏
  • 举报
回复
Exception:写入位置0x00000000时发生冲突
战在春秋 2017-07-28
  • 打赏
  • 举报
回复
引用
int integer;也只是声明
int integer;  //这是定义
extern int integer; //这是声明
声明和定义的区别也是一个比较重要的知识点。 详细请参考: http://blog.csdn.net/feitianxuxue/article/details/7204116
唯恐天下不乱 2017-07-28
  • 打赏
  • 举报
回复
引用 8 楼 From_TaiWan 的回复:
[quote=引用 5 楼 shit_moment 的回复:] 指针必须要指向一个内存,才能写。
引用 7 楼 fight_in_dl 的回复:
int integer; //在栈上定义了一个int类型变量,该变量的地址不为空
sscanf(c, "%d", &integer); //不会报错
请问,int integer;也只是声明,并没有分配内存,并没有指向一个具体的内存地址,为什么sscanf(c, "%d", &integer)可以运行,难道&可以分配内存?[/quote] 这个基础要好好加强啊。 指针和变量的区别。
秋的红果实 2017-07-28
  • 打赏
  • 举报
回复
引用 5 楼 shit_moment 的回复:
指针必须要指向一个内存,才能写。
引用 7 楼 fight_in_dl 的回复:
int integer; //在栈上定义了一个int类型变量,该变量的地址不为空
sscanf(c, "%d", &integer); //不会报错
请问,int integer;也只是声明,并没有分配内存,并没有指向一个具体的内存地址,为什么sscanf(c, "%d", &integer)可以运行,难道&可以分配内存?
战在春秋 2017-07-28
  • 打赏
  • 举报
回复
引用
写成下面形式就不行
int *integer = NULL;   //integer是未初始化的空指针,不能使用该指针访问内存。
sscanf(c, "%d", integer);
int integer; //在栈上定义了一个int类型变量,该变量的地址不为空
sscanf(c, "%d", &integer); //不会报错

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧