C语言中*p和**p有何区别

如题所述

一、表示的东西不同

*p表示p代表相应数据类型在存储单元中存储的首地址,而这个存储单元存储的是相应类型数据的数值。

**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值。

二、基类型不同

例如int *p1,**p2;

两者本质上都是指针,但是两者的基类型不同。p1的基类型是int,换句话说p1指针指向的是int型的数据,而p2的基类型是int *换句话说p2指向的是指向int型数据的指针,即指向指针的指针。

三、用法不同

例如int *p;

那么p就是指向int类型变量的一个指针。(即数组)

如果int**p;

那么p就是指向int*类型指针的一个指针。(即指向一维数组的指针,即二维数组

温馨提示:内容为网友见解,仅供参考
第1个回答  2019-09-03

一、表示的东西不同

*p表示p代表相应数据类型在存储单元中存储的首地址,而这个存储单元存储的是相应类型数据的数值。

**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值。

二、用法不同

例如int *p;

那么p就是指向int类型变量的一个指针。(即数组)

如果int**p;

那么p就是指向int*类型指针的一个指针。(即指向一维数组的指针,即二维数组

C语言是一门面向过程、抽象化的通用程序设计语言,广泛应用于底层开发。C语言能以简易的方式编译、处理低级存储器。C语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。

尽管C语言提供了许多低级处理的功能,但仍然保持着跨平台的特性,以一个标准规格写出的C语言程序可在包括一些类似嵌入式处理器以及超级计算机等作业平台的许多计算机平台上进行编译。

扩展资料:

C语言语言特点:

1、简洁的语言

C语言包含有各种控制语句仅有9种,关键字也只有32 个,程序的编写要求不严格且多以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。

2、具有结构化的控制语句

C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if⋯else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。

3、丰富的数据类型

C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。

4、丰富的运算符

c语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。

5、可对物理地址进行直接操作

C语言允许对硬件内存地址进行直接读写,以此可以实现汇编语言的主要功能,并可直接操作硬件。c语言不但具备高级语言所具有的良好特性,又包含了许多低级语言的优势,故在系统软件编程领域有着广泛的应用。

参考资料来源:百度百科-c语言

本回答被网友采纳
第2个回答  2018-12-22

C语言中,*p 和p都常用在指针当中表示一个指针变量,*p 和p的区别:

1、表示的含义不同

*p表示此指针指向的内存地址中存放的内容。

p表示一个指针变量的名字,指此指针变量所指向的内存地址。

2、输出的格式不同

*p一般是一个和指针类型一致的变量或者常量。

p输出的是一个16进制数, 输出一个指针的地址。

3、功能不同

*p是让程序去那个地址取出数据。

p存放的是地址。

例子:

1、int a[5]={1,2,3,4,5};

int *p=a;//这是在定义指针变量p的同时就直接给它初始化,即把数组a的首地址赋给它。

2、int a[5]={1,2,3,4,5};

int *p;//声明指针变量p

p = a;

扩展资料

(*p)操作是这样一种运算,返回p 的值作为地址的那个空间的取值。(&p)则是这样一种运算,返回当时声明p 时开辟的地址。可以用赋值语句对内存地址赋值。

例:

int *p;

p=2003H;

*p=3000H

结果:

**p=*(*(p))=*(*(2003H))=*(3000H)=3000H。

&&p=&(&(p))=&(3001H),此时出错了,3001H 是个常数无法存放地址。

*&p=*(&(p))=*(3001H)=2003H,也就是*&p=p。

参考资料来源:百度百科——p (C语言)

百度百科——指针

第3个回答  2013-02-16
*p表示p代表相应数据类型在存储单元中存储的首地址,而这个存储单元存储的是相应类型数据的数值,

**p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值!
第4个回答  推荐于2017-11-25
区别大了。

*p只是一个指针,
**p是一个指向指针的指针

例如int *p;
那么p就是指向int类型变量的一个指针。(即数组)
如果int**p;
那么p就是指向int*类型指针的一个指针。(即指向一维数组的指针,即二维数组)本回答被网友采纳

C语言中*p和**p有何区别
一、表示的东西不同 p表示p代表相应数据类型在存储单元中存储的首地址,而这个存储单元存储的是相应类型数据的数值。p表示p也表示地址,简单的说,这个地址对应的存储单元存储的数也是一个地址,而不是数值,而这个被存储的地址对应的存储单元存储的数据才是真正的相应类型的数值。二、基类型不同 例如int...

C语言问题*p与(*p)的区别?
综上所述,*p和(*p)的主要区别在于操作的对象和执行的操作不同。在第一个例子中,*p直接获取指针p指向的double型数据;而在第二个例子中,(*p)获取的是函数的执行结果。理解这个区别有助于更准确地使用C语言中的指针和函数。

指针p与* p的区别是什么?
c语言的指针部分 *p与p区别如下:1、作用不同 p表示此指针指向的内存地址中存放的内容。p是一个指针变量的名字,表示此指针变量指向的内存地址。2、输出内容的格式不同 p常用在一个和指针类型一致的变量或者常量。p输出一个指针的地址,通常是输出一个16进制的数。3、效果不同 p是让编译器从指定的...

C语言中(*p)和*(*P)的含义是什么?
int (*p)(int a, int b); \/\/这里的*p也只是定义p为指针 int *(*p) (int a,int b);\/\/这里只是定义了p为函数指针 int a;int b;int *q=&a;int **p=&q;p = &b; \/\/结果就是q=&b;(*p) = 5\/\/结果就是b=5;

c语言定义指针时**p与*p的区别 谢谢啦
int**p只能指向int*p,而*p只能指向intp.所以int**p要想指向int p,就不能加一个*号了,要加两个*号.加一个是int*p,加两个才是int p

C语言问题*p与(*p)的区别
double *p(int, int*) \/\/这个是声明一个函数,此函数返回双精度浮点型指针,有两个参数,分别是整型和整型指针 double (*p)(int, int*) \/\/这是声明一个指针,此指针是一个函数指针,指向一个函数,这个函数有两个参数:整型数和整型数指针;返回值是双精度浮点型数 ...

*p和p的区别c语言
c语言*p和p的区别是:指针符不同:用法不同、运算符不同、变量不同、类型不同。1、指针符不同:通常用于解引用指针,即获取指针所指向的存储单元的值,而p只是一个指针变量的名称,用于存储指针的地址。2、用法不同:以便更改或访问存储在指向的存储单元中的值,但是p只是指针变量,不能执行此操作。

*p和p的区别c语言
在C语言中,*p和p具有本质的区别。简单来说,p通常表示一个变量的地址,而*p表示该地址所指向的值。这种区别反映了C语言作为低级语言对内存地址直接操作的特点。首先,我们来了解p的含义。在C语言中,变量名表示内存中的一个位置,这个位置用于存储该变量的值。当我们声明一个变量,比如int p = 10;...

C语言中 *p() 和 *(p)()有什么区别?
p()和*(p)()是一样的 你要问的是*p()和(*p)()吧 int *p()表示的是返回类型是整型指针 int (*p)()表示的是int ()类型的函数指针

c语言中p*是什么意思,他和*p的区别是什么?
p 如是出现在算术表达式中,这个星号就是乘号,表示相乘,如果是出现在声明中(如变量定义),那就表明p是一种数据类型,p*表示要声明这种类型的指针变量。p 依然可以表示相乘的运算,也可表示提取p指针指向的位置保存的值。例如:int a=9;int *p=a;printf("%d",*p);这个printf()调用中的*p表示...

相似回答