当前位置:首页 » 编程语言 » c语言中解引用操作符
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中解引用操作符

发布时间: 2023-01-17 12:31:45

‘壹’ c语言 *p 和p的区别

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;

(1)c语言中解引用操作符扩展阅读

(*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。

‘贰’ C语言中的* nData啥意思。*是什么意思

如果是在变量定义中,*表示nData是一个指针,在其他地方,*是解引用操作符,*nData返回nData指向的对象。

‘叁’ c语言中的指针*x=*(x+1)是什么意思

这样操作的前提是,x是一个指针,指向一片连续空间的一个位置。
* 是解引用操作符,即取到指针指向的值。
指针可以进行+ - 等操作,进行移动。 x+1就是x向后移动的一个位置
例如:
int* x = new int[2]; //建立了两个数的数组,x指向第一个数
*x = 1; //将第一个数的值设为1
int* y = x+1; //指针y指向第二个数
*y = 2; //将第二个数的值设为2

*x = *(x+1); // *(x+1)就是第二个数的值:2, 执行完这句后,第一个数也变成了2

delete[] x;
x = NULL;

‘肆’ c语言中*z++与++*z的区别

由运算符结合性可知
*z++等效于*(z++) 即表达式的值为*z,且引起指针z指向后一元素

++*z等效于++(*z) 即表达式的值为z指针所指当前元素的值自增一后的值,且指针z指向不变

‘伍’ C语言中,p=&a 那么*p与a的区别是什么

a和p是变量,&a和*p是表达式,1和0x1000是常量
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)
在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。
*p按照Stanley Lippman的着作《C++ Primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是逗对指针变量p进行解引用操作地,这与表达式&a的含义逗取整形变量a的地址地是正好是相反的操作。

‘陆’ c语言中解引操作符是什么

*
比如定义一个整形指针
int *p;
int a=5;
p=&a;
*p(=5)就是解引操作符的应用

‘柒’ C语言里,*(&a)==a,&(*p)==p的区别

a和p是变量,&a和*p是表达式,1和0x1000是常量
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)
在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。
*p按照Stanley Lippman的着作《C++ Primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是“对指针变量p进行解引用操作”,这与表达式&a的含义“取整形变量a的地址”是正好是相反的操作。

‘捌’ c语言解引用和取地址操作符

我猜是相互抵消了
最好看看编译后生成的结果
如果*&*&*&*p++与*p++生成的二进制文件一模一样 那肯定是抵消了

‘玖’ 解引用的词语解释

对于c语言中指针的操作符有两个:&和*。对于&,好理解,翻译的也不错,就是“取地址”的意思。但对于*,翻译为“解引用”,字面意思不好理解,即使看了后面内容才知道不过是“取指针指向的地址的内容”,也仍然是觉得怪怪的,“解引用”这个词难记也难于从字面直接判断意思,以致时间长了还是感觉像见了熟悉的陌生人。
翻了好多资料,以及各种网上解释,大约有点意思了。依我的理解,约摸是这样:
“引用”这个词,出现最多的场景就是:在文章或者注脚里,写上“引用(或摘自)某某作者某篇文章”,意思很明了,就是出现在本文的不是作者自己的话,而是别个作者的话,于是“引用”的意思就是拿过来用。(以下提到”场景“,就是指的这个例子)

‘拾’ C语言和C++中的::和->是什么意思

::是作用域操作符,表示你引用的变量限定在该作用域内。
->是箭头操作符,设计它的目的是为了简化输入,以及增强程序的可读性的
->的功能相当于解引用操作符*和成员调用操作符.的组合体

例如:
class C
{
static int a;
}
访问a就可以使用C::a来访问,表明这个变量a具有类C的作用域。它在该类内可见。了解更多,那么namespace就是个很好的例子。

另外。
class C
{
private:
int a;
}
void main()
{
C *p=new C();
//访问a可以使用如下
(*p).a
或者直接
p->a
来访问,是不是更简单明了呢
}
二者的功能是一样的。总结就是,->的功能就是提供了一种对象指针更方便的访问对象成员的方法