关于指针赋值问题?

清竹小雨 2011-12-20 06:49:40
#include <stdio.h>

void main()
{
int i = 3;
int *pmax;

*pmax = i;

printf("%x\n", *pmax);
printf("%d\n", *pmax);

}


为什么这样不能通过呢
...全文
95 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaochizhen33 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 mingliang1212 的回复:]
引用 4 楼 ko1_1ok 的回复:
引用 1 楼 keiy 的回复:
*pmax = i; //pmax 没分配内存
应该是
pmax = &amp;amp;i;

为什么pmax = &amp;i就分配内存呢?


准确地说,不是分配内存的问题.而是指针的初始化的问题.
指针在没有初始化之前他指向的内容是不可访问的.
pmax = &i;//这句……
[/Quote]

++ 指针在声明之后肯定会有一个随机值的。如果可以随意使用会很危险的。
必须通过初始化来保证对内存的修改安全
iamnobody 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 ko1_1ok 的回复:]
引用 1 楼 keiy 的回复:
*pmax = i; //pmax 没分配内存
应该是
pmax = &amp;i;

为什么pmax = &i就分配内存呢?
[/Quote]

准确地说,不是分配内存的问题.而是指针的初始化的问题.
指针在没有初始化之前他指向的内容是不可访问的.
pmax = &i;//这句的作用是让指针指向i的地址.
完成合理的初始化之后就可以访问指针指向的内容了.
访问包括读和写.

鲤鱼 2011-12-20
  • 打赏
  • 举报
回复
int *pmax 你这定义的是pmax,而不是定义的*pmax
pmax中保存的是变量i的地址
所以
赋值: pmax=&i;
使用:*pmax
猪头小哥 2011-12-20
  • 打赏
  • 举报
回复
int *pmax 你这定义的是pmax,而不是定义的*pmax,而定义指针后必须的初始化,而变量的初始化就是请求操作系统分配内存。

pmax = &i;//就是请求操作系统分配内存~~~应该是这样的。
清竹小雨 2011-12-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 keiy 的回复:]
*pmax = i; //pmax 没分配内存
应该是
pmax = &i;
[/Quote]
为什么pmax = &i就分配内存呢?
qq120848369 2011-12-20
  • 打赏
  • 举报
回复
pmax存储的地址 指向的 内存, 没有 被分配.
蓝欣XRZS 2011-12-20
  • 打赏
  • 举报
回复
pmax没有被初始化,也就是说pmax指向的单元是不可预见的
柯本 2011-12-20
  • 打赏
  • 举报
回复
*pmax = i; //pmax 没分配内存
应该是
pmax = &i;

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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