社区
C语言
帖子详情
int *p=5为什么不行?char *s="se"却可以?
wgf42422
2009-12-20 06:51:22
如题。。。。。。
...全文
259
17
打赏
收藏
int *p=5为什么不行?char *s="se"却可以?
如题。。。。。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
17 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
arong1234
2009-12-20
打赏
举报
回复
写程序不是为了编译不报错,而是为了正确性。你这种方法也许能把编译错误弄没了,但是在绝大多数情况下逻辑都会是错误得。
[Quote=引用 13 楼 wxhanshan 的回复:]
int *p=(int *)5
[/Quote]
辛鹤
2009-12-20
打赏
举报
回复
int *p=(int *)5
arong1234
2009-12-20
打赏
举报
回复
这完全就是瞎说,前者失败是因为5不是地址,而后者没有报错是因为"se"本身就是地址。字符串是特殊得,它是以\0结尾得字符数组,因为它是数组,因此它是“地址”兼容得
[Quote=引用 2 楼 jackyjkchen 的回复:]
*p=5是赋值地址,*s = "se"才是赋值内容,会自动分配一个地址
[/Quote]
风吹草低现羊牛
2009-12-20
打赏
举报
回复
楼主,请补基础!
macrojj
2009-12-20
打赏
举报
回复
后者多了开辟空间这一步。
东大坡居士
2009-12-20
打赏
举报
回复
顶五楼~~
lutiesheng
2009-12-20
打赏
举报
回复
一楼正解
小魔菇
2009-12-20
打赏
举报
回复
顶2楼
xuhaihua046
2009-12-20
打赏
举报
回复
二楼正解
z569362161
2009-12-20
打赏
举报
回复
int *p=5 //错误.定义的指针应该指向地址.
//int *p=&a;应该这个样子地,int a=5;
char *s="se"//可以.这是C语言里字符串指针定义方法.
sageking2
2009-12-20
打赏
举报
回复
这样:int *p=(int *)5;
shanguianti
2009-12-20
打赏
举报
回复
1#楼说的对,Int *p=5是直接把地址单元编号为5的地址赋于p,地址编号为5的内存单元一般是系统所占用的,因此这样赋值通常会出错。而char *s=“se”,s将指向字符串的首地址,字符串在定义时系统会自动开辟一段内存空间,这段内存空间不会是系统自己占用的空间,因此第二个赋值不会出错。
jackyjkchen
2009-12-20
打赏
举报
回复
*p=5是赋值地址,*s = "se"才是赋值内容,会自动分配一个地址
diablox0147
2009-12-20
打赏
举报
回复
因为*p=5你直接把指针的值赋予5,也就是说p指向5这个地址
而*s = "se"所做的动作比*p=5多几步,那就是自动在常量区开辟一个空间然后放入"se\0"之后把放这几个东西的地址返回给*s,
所以这2个不同
weinikuaile
2009-12-20
打赏
举报
回复
[Quote=引用 1 楼 diablox0147 的回复:]
因为*p=5你直接把指针的值赋予5,也就是说p指向5这个地址
而*s = "se"所做的动作比*p=5多几步,那就是自动在常量区开辟一个空间然后放入"se\0"之后把放这几个东西的地址返回给*s,
所以这2个不同
[/Quote]
int *p=5;等价于int *p,p=5;
char *s="sa";等价于 char *s,s="sa";
starshift
2009-12-20
打赏
举报
回复
int *p=(int *)5
编译不会报错,能运行起来才怪。
selooloo
2009-12-20
打赏
举报
回复
5 是int 型常量,p 是int *;类型不匹配
python调用dll文件时传入参数是
int
*,返回值是
char
*,对传入的
char
*所指的内容的修改
首先 若调用的dll中的函数的参数是
int
型的指针: 在
int
,string,
char
*的类型转换
1.
int
转换为string: 可以利用stringstream,要包含头文件#include 。
int
main() {//
int
转string stringstream ss;
int
i=100; string str; ss<
>str; cout<
int: 与
int
转换为string类似,也要借用s
c++中的一些类型转换 : CString,string,
int
,long,double,
char
*,const
char
*,date等
最近做项目用到c++,才发现c++中的数据类型不是一般的BT。尤其是我和婷还是分开操作的。我写底层,用的是WIN32控制台;而婷写MFC。由于没有经验,所以没有写中间的转换程序。当集成时,类型转换特别麻烦。以下都是我收集的类型转换的方法和一些经验,供大家参考。欢迎补充~~1.
char
* to stringstring s(
char
*); 注:在不是初始化的地方最好用assign().
C++ 中
int
、
char
、
char
*、 const
char
*、 string之间的转换
1.
char
* to string string s(
char
*);注:在不是初始化的地方最好用assign().!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!2. string to const
char
*string a="strte";const
char
* r=a.c_str();注意是const的。还要转到
char
*:~~~~~~~~~~~
C++
int
与string/
char
*互转
1 前言 其实在源代码中
int
本身也要用一串字符表示,前后没有双引号,告诉编译器把它当作一个数解释。缺省情况下,是当成10进制(dec)来解释,如果想用8进制,16进制,怎么办?加上前缀,告诉编译器按照不同进制去解释。8进制(oct)—前缀加0,16进制(hex)—前缀加0x或者0X。string前后加上双引号,告诉编译器把它当成一串字符来解释。 2
int
转化为string或者
char
* 2.1...
C语言
70,039
社区成员
243,246
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章