指针初始化

nanjingnew4 2012-04-05 04:08:40
有个问题比较困扰
int *p=2;
char *q="abcde";

同样是初始化,为什么int就要malloc,char就可以直接赋字符串
...全文
120 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Ever_lover 2012-04-05
  • 打赏
  • 举报
回复
其实把 定义一个指针就是给他一个地址,int *P=2,2是个整型也不是地址类型的,当然会出错的char *p=““;是把字符串的首地址给P,类型符合当然可以。。

说白int *p,p就是个地址(32位的多见),只是这个地址里面存放的数据类型不一样所以才有了各种类型的指针
wzhwisk 2012-04-05
  • 打赏
  • 举报
回复
还未理解指针的意义。指针其实就是地址。
shn521 2012-04-05
  • 打赏
  • 举报
回复
#include <iostream.h>
void main()
{
// char *q="abcde";
char *q;
q="abcde";
cout<<q<<endl;

}
试试,效果一样
xiyoulaoyuanjia 2012-04-05
  • 打赏
  • 举报
回复
上面的理解都行!
shn521 2012-04-05
  • 打赏
  • 举报
回复
char *q="abcde";
字符串"abcde",其实"abcde"代表的是地址,这个地址存的内容是"abcde",
所以是对的
面包大师 2012-04-05
  • 打赏
  • 举报
回复
可以看做是一个标准,一个规定,记住就好。。。
aljadyan 2012-04-05
  • 打赏
  • 举报
回复
char *q="abcde"; "abcde"; 是存放在静态区域的,且其中的值不能修改;int *p是一个指针变量,2是一个常量,不能赋值给指针变量
www_adintr_com 2012-04-05
  • 打赏
  • 举报
回复
2 是 int 型
"abcde" 不是 char 型

'a' 是 char 型, 如果你写成 char* q = 'a' 的话一样不行的.
shn521 2012-04-05
  • 打赏
  • 举报
回复
int *p=2;
相当于
int*p;
p=2;
当然不对了
pengzhixi 2012-04-05
  • 打赏
  • 举报
回复
是因为"abcde"作为字符串字面量有存储空间存放,而对于2来说是一个立即数没有存储空间存放它。

69,371

社区成员

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

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