定义指针变量时候2种写法有什么区别int* p和int *p 20

定义指针变量时候2种写法有什么区别int*p和int*p#include<stdio.h>intmain(){int*p=NULL;*p=5;printf("%d\n\n... 定义指针变量时候
2种写法有什么区别int* p和int *p

#include<stdio.h>
int main()
{
int* p=NULL;

*p=5;

printf("%d\n\n",*p);
return 0;

}
这个程序为什么会报错呢?
q
展开
 我来答
轩逸草
2008-07-31 · 超过11用户采纳过TA的回答
知道答主
回答量:33
采纳率:0%
帮助的人:44.9万
展开全部
int* p和int *p 写法没啥区别,不过我们习惯上用 int *p
下面我重点给你讲一下你的程序出错的原因吧!
int* p=NULL;在stdio.h头文件中就有对NULL的定义,它是一个符合常量,就是整数0.故该语句表示P初始时不指向任一有用的单元。所以如果你想用语句*p=5; 给P所指单元赋值的话,可以先定义一个int型的变量如a,然后让p再指向a(即p=&a;),这样你的程序就OK啦!
再有一种麻烦点的改正方法,就是使用分配内存空间函数malloc,其调用形式是:
(类型说明符*)malloc(size)
其功能是:在内存的动态存储区中分配一块长度为“size"字节的连续区域。函数的返回值为该区域的首地址。(类型说明符*)表示把返回值强制转换为该类型指针,“size"是一个无符号整数。
匿名用户
2008-07-31
展开全部
这两种写法的功能没有区别。
这个程序出错是因为你没有为p分配空间,所以5就无处可放,所以出错:

#include<stdio.h>
#include<stdlib.h>
int main()
{
int* p=NULL;
p=malloc(sizeof(int));/*为p分配可以存放一个int变量的空间*/
*p=5;

printf("%d\n\n",*p);
free(p);/*释放为p分配的内存*/
return 0;

}

------------------------------------------

附:网友“loveqzl”的说法是不正确的,这两种写法的作用是一样的,只不过第一种用法会使程序员产生一种错觉,错误地认为int*是一种数据类型,这种认识就会使其写出类似“int* a,b”这样的指针定义语句,但是这样做,b就不是一个指针,而是一个int变量

******************************************

80407003
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
baoyu24321
2008-07-31
知道答主
回答量:69
采纳率:0%
帮助的人:0
展开全部
没有区别
int* p 是C++写法
int *p 是C写法

int *p;
只是一个指针 你没有用他指向任何地址的时候不能附值
比如:
int q;
p = &q;
*p =5;
就没问题了

连续声明多个指针的两种写法
int* a;
int* b;
or
int *a,*b;
(参见c++primer p102)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
渊源国有循环q
2008-07-31 · TA获得超过785个赞
知道小有建树答主
回答量:532
采纳率:100%
帮助的人:354万
展开全部
汗,int* p和int *p
简直是两个事情啊!
一个是声明都错了,
第二个才是正确声明:-)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
月夜儛
2008-07-31 · TA获得超过275个赞
知道小有建树答主
回答量:218
采纳率:0%
帮助的人:0
展开全部
这两种定义方法是一样的吧
printf("%d\n\n",*p)应该是printf("%d\n\n",&p);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式