C语言 *p 和p的区别?

Python016

C语言 *p 和p的区别?,第1张

两者之间的区别如下:

1、表示的意义不同。

p是一个指针变量的名字,表示此指针变量指向的内存地址,而*p表示此指针指向的内存地址中存放的内容。

2、数量形式不同。

p如果使用%p来输出的话,它将是一个16进制数。*p一般是一个和指针类型一致的变量或者常量。

3、定义不同。

p存放的是地址,而*p是让程序去那个地址取出数据。

例子:

#include <stdio.h>

void main()

{

int x=3

int *p,*q

p=&x,q=&x

printf("%d\n",*p++)

printf("%d\n",(*q)++)

printf("%d\n",x)

}

输出结果为:3,3,4

解释:

*p++:是先取出*p的值,再使p加1

//p是个指针,给p加1,相当于让p指向了x所在地址的下一个位置,而对于x则是没有任何影响

(*p)++:是使*p的值加1.

//*p则是p指向的位置对应的值,题目中是*q,所以此时的*q就是x的值,为3,当输出*q之后,再给*q即x自加1,综上所述,x就会变为4

参考资料:

百度百科-p (C语言)

百度百科-C语言

看函数的头文件。判断代码是c语言还是p可以看函数的头文件,也就是代码前的include命令,代码(code)是程序员用开发工具所支持的语言写出来的源文件,是一组由字符、符号或信号码元以离散形式表示信息的明确的规则体系,代码设计的原则包括唯一确定性、标准化和通用性、可扩充性与稳定性、便于识别与记忆、力求短小与格式统一以及容易修改等。

#include <stdio.h>

void main()

{

int *p//P是一个整型指针

printf("%d\n",p)//以10进制整数的形式输出指针P的值

printf("%d\n",&p)//以10进制整数的形式输出指针P的地址

}

P是指针

&P是指针P的地址

*P是指针P的内容,也就是P所指向的那个地址

注意,内存中的地址都是16进制的,可以转化为10进制,不过不是很推荐这么做。