汉扬编程 C语言入门 (c语言中p是什么意思)C语言中,p,&p,*p有什么关系?

(c语言中p是什么意思)C语言中,p,&p,*p有什么关系?

假设我们定义一个指针p。 那么会经常使用到三个符号:

1,p;

2,*p;

3,&p; 初学者经常会感到很迷茫,到底这三个符号表示什么? 我们知道,p是一个指针变量的名字,表示此指针变量指向的内存地址,如果使用%p来输出的话,它将是一个16进制数。而*p表示此指针指向的内存地址中存放的内容,一般是一个和指针类型一致的变量或者常量。 而我们知道,&是取地址运算符,&p就是取指针p的地址。等会,怎么又来了个地址,它到底和p有什么区别? 区别在于,指针p同时也是个变量,既然是变量,编译器肯定要为其分配内存地址,就像程序中定义了一个int型的变量i,编译器要为其分配一块内存空间一样。而&p就表示编译器为变量p分配的内存地址,而因为p是一个指针变量,这种特殊的身份注定了它要指向另外一个内存地址,程序员按照程序的需要让它指向一个内存地址,这个它指向的内存地址就用p表示。而且,p指向的地址中的内容就用*p表示。 我来举个例子说明这三个符号到底表示什么。 假设有一个楼盘的销售员,当然,现在时髦的叫法是“销售代表”之类的,我们用字母x表示他。他负责销售一个楼盘中的某套房子,此房子有一个地址为A,而他本身也需要有地方住,他居住的房子的地址为B。而这个幸运的销售员很快的卖掉了这套房子给C。现在公司要求对销售的房子必须包产到户,也就是说,现在必须提到x的时候能够管理到C。 如果用程序表示上述内容的话就可以使用指针。首先定义一个指针p,让他指向地址A,地址A中住的是C,而x本来居住的地方的地址是B。OK,现在能知道p,*p,&p表示什么了吗?没错,p表示此指针指向的地址,就是A,而*p表示此地址中居住的人,就是C,而&p表示这个销售员居住的地址,就是B。

c语言指针*p中p++什么意思?

p是指针变量,其值是一个变量的地址。p收到了哪个变量的地址,就指向哪个变量。该变量成为p的对象。 *p是p所指向的对象的值。 例如:int i=3,*p; p=&i; 注意:p收到i的地址,故p指向i,i是p的对象。 printf(\”%d,%d \”,i,*p); 输出:3,3 注意:*p是p所指向的对象的值,即i的值。 C语言 C语言是一门通用计算机编程语言,应用广泛。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。

c语言*&p和&*p怎么算的?他们有什么不同?

顺便说一下

&是取地址符,他在最前面,输出来的就是地址

*是返回地址所在元素符,他在前面,一般输出的是元素(除非他是指向指针的指针)

然后你问题里的就好回答了

由于&、*是同级运算符,遵循从右往左的运算顺序

*&p是指,先取p的地址,然后回到&p所在的元素

&*p是指,先回到p所在地址的元素,然后取该元素的地址(其实就是p)

例如:

(1)

p=100;

&p=100048;(假设这是p的地址)

*&p=100;(*是取上面那个地址所在的变量)

(2)

p=100048;(此时的p必须是一个地址)

*p=100;(取地址所在变量)

&*p=100048;(&取地址符,又取到了上面那个元素的地址)

C语言:如果p是一个指针参数,&p是什么意思?

*(p+1)表示具体的数值,指针p所指向的内存地址单元的下一个内存地址单元中的值;

p+1 表示地址,指针p所指向的内存地址的下一个内存地址。

可以通过下面的实例来理解*(p+1)与p+1之间的区别:

1

2

3

4

5

int *p; // 定义一个int类型的指针p

int a[3]={1,2,3}; // 定义一个int类型的数组a,并进行初始化

p = a; // 使指针p指向数组a的首地址

printf(\”%d\”, *(p+1)); // 输出2,等价于a[1]

printf(\”%x\”, p+1); // 以16进制形式输出a[1]的地址(如08ff12),等价于&a[1](&为取地址运算符)

本文来自网络,不代表汉扬编程立场,转载请注明出处:http://www.hyzlch.com/cjia/7175.html

(求1到20之间的奇数之和C语言)C语言程序求1—100之间的奇数和和偶数和?

(c语言直接访问是什么意思)“c语言允许直接访问物理地址,能进行位操作”是什么意思啊?

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注

返回顶部