* p =100,对还是错?

anyegg 2012-01-16 07:22:38



上图截自《C程序设计(第四版)》谭浩强 224页 其中

"* pointer_1=100;"

这句不是表示把指针变量所指向的变量的值赋值为100么?为什么书上说是“把地址100赋给指针变量”并且判为非法?
...全文
942 36 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
36 条回复
切换为时间正序
请发表友善的回复…
发表回复
ASD314 2014-03-17
  • 打赏
  • 举报
回复 1
话说谭是指初始化的时候不行
ly06051989 2012-02-01
  • 打赏
  • 举报
回复
*p=100是对的吧,将100赋值给指针P所指的地址

int *p,a[10];
p=a;
*p=100;
这样才是P指向数组a的地址,加上*号就是把常量赋给指针指向的地址,也就是给数组存入第一个数100.
我记得学C语言的时候是这个样子的。。。。时间长了不是很确定了。
wizard_tiger 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 anyegg 的回复:]

引用 10 楼 lvjing_csdn 的回复:

在编译时100被认为是一个整形常量,而pointer_1是一个指针变量。他们两个的类型不同,而且c没有从整形到一个指针类型的自动转换。这种用法在使用时会给出警告或者错误。不过这样应该是可以的pointer_1=(TYPE *)100(注:TYPE是pointer_1的类型入),另这种用法也是没有意义的,即便是能把地址100赋值给pointe……
[/Quote]
这只能说是书错了。
pplovelyliu 2012-01-17
  • 打赏
  • 举报
回复
书的意思是声明指针*poiner_1的时候不能这样赋值
amei_wang 2012-01-17
  • 打赏
  • 举报
回复
我的理解是:如果你想给一个指针代表的地址里的数据赋值的话,就不能这样用,因为这样会把地址直接更改,这个地址里面的数据是多少,是不确定的。
ANT2AUNTH 2012-01-17
  • 打赏
  • 举报
回复
类型,因为100是一个整型,不是地址
lvjing_CSDN 2012-01-17
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 anyegg 的回复:]
引用 10 楼 lvjing_csdn 的回复:

在编译时100被认为是一个整形常量,而pointer_1是一个指针变量。他们两个的类型不同,而且c没有从整形到一个指针类型的自动转换。这种用法在使用时会给出警告或者错误。不过这样应该是可以的pointer_1=(TYPE *)100(注:TYPE是pointer_1的类型入),另这种用法也是没有意义的,即便是能把地址100赋值给pointer……
[/Quote]
哦,我觉得书上也是想这么说:poiner_1=100
peng_weida 2012-01-17
  • 打赏
  • 举报
回复
int *pointer_1 = 100; //pointer_1是指针变量,100是整数,不合法
anyegg 2012-01-17
  • 打赏
  • 举报
回复
我认为是书上错了

书上本来应该是想表达


type *p1=100;
p2=100;


这两种写法是非法的,但是可能是疏忽,少写了类型名或者前边多加了个*号.

感谢各位的发言,结贴.
iamnobody 2012-01-17
  • 打赏
  • 举报
回复
用电脑看了一下这贴,原来有图片。。。

他应该是写漏了:

int *p = 100;//错的、

还有,真庆幸没有看他的书入门。。。。

楼主赶紧换了。
warren258 2012-01-17
  • 打赏
  • 举报
回复
实践了一下,dev c++ 5.0 编译不过去
报错为:23 invalid conversion from `int' to `int*'
jun0616 2012-01-17
  • 打赏
  • 举报
回复
书上是这意思吧
int *ipoint;
ipoint = 100; //整形赋值到指针

看别的书吧
iamnobody 2012-01-17
  • 打赏
  • 举报
回复
楼上错。5楼误导。谭浩强的书看不得!!!!看Primer吧
平凡的思想者 2012-01-17
  • 打赏
  • 举报
回复
请检查一下书上内容跟下面那个情况比较一致。

1、初始化指针指向写法:
int *pointer_1 = 100;//把指针指向地址100

2、改变指针的内容:
int x = 10;
int *pointer_1 = &x;
*pointer_1 = 100;//该指针指向的内容,这时x的值为100
ZZMS_LN 2012-01-17
  • 打赏
  • 举报
回复
绝对是正确的!
lookupheaven 2012-01-17
  • 打赏
  • 举报
回复
lz你看源代码是不是
int *pointer_1 = 100;

如果是这样,那就是正确的。
Harper 2012-01-17
  • 打赏
  • 举报
回复
这句语法上没错!
100编译器会把它认为是2进制地址!
C++Primer上讲的很清楚了
louisqun 2012-01-17
  • 打赏
  • 举报
回复
垃圾谭浩强 int *m_point=100; 这样的写法都写出来了。。
这个是野指针。很容易引起问题要使用指针必先初始化一个变量。让指针指向这个地址。
CloundSea 2012-01-17
  • 打赏
  • 举报
回复
同意楼上。

int *pointer1 = 100 ;//直接赋值错误

int *pointer2, a ;
pointer2 = &a ;
*pointer2 = 100 ;//这是可以的

Oracle_WD 2012-01-17
  • 打赏
  • 举报
回复
* poiner_1=100 这句赋值应该是对的啊。
加载更多回复(16)

70,031

社区成员

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

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