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

来源:百度知道 编辑:UC知道 时间:2024/06/14 17:35:12
定义指针变量时候
2种写法有什么区别int* p和int *p

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

*p=5;

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

}
这个程序为什么会报错呢?
q

这两种写法的功能没有区别。
这个程序出错是因为你没有为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

这两种定义方法是一样的吧
printf("%d\n\n",*p)应该是printf("%d\n\n",&p);

楼上的说的很好,建议大家养成int *p,*q这种习惯,如果int*连写的话,容易犯int* p,q这样的错误.

没有区别
int* p 是C++写法
int *p 是C写法

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

连续声明多个指针的两种写法
int* a;
int* b;
or