tttttt@@@@@@ 发表于 2023-6-8 15:12:02

在指针与数组中这几种赋值怎么区分

*p=&a与p=&a与*p=a与p=a

isdkz 发表于 2023-6-8 15:12:03

在C语言中,这四种赋值有很大的区别。为了理解这个区别,我们首先需要了解一些基本概念:数组和指针。

首先,数组 a 是一个储存多个同一类型元素的数据结构, a 代表数组的第一个元素。

其次,指针是一个变量,其值为另一个变量的地址,也就是指向另一个变量的引用。假设 p 是一个指针。

现在,我们来看看你给出的这四种赋值方式:

1.*p = &a;
   这种赋值方式在语法上是错误的。因为 &a 是一个地址(指向数组的第一个元素),而 *p 是指针 p 所指向的值,不能直接把地址赋给一个值。

2.p = &a;
   这是正确的赋值方式。这里,我们把数组 a 的第一个元素的地址赋给指针 p 。现在, p 指向数组的第一个元素。

3.*p = a;
   这是正确的赋值方式,假设 p 已经指向某个有效内存。在这里,我们把数组 a 的第一个元素的值赋给指针 p 所指向的位置。现在, p 所指向的位置的值等于 a 。

4.p = a;
   这也是正确的赋值方式。在C语言中,数组名可以被解释为数组第一个元素的地址。所以这行代码的意思是让指针 p 指向数组 a 的第一个元素。这个表达式等同于 p = &a; 。

sfqxx 发表于 2023-6-8 18:13:48

这里介绍四种不同的指针和数组赋值方式:


[*]`*p = &a`

这个语句将`p`指向数组`a`的第一个元素(也就是下标为0的元素),使用`*p`可以访问该元素的值。

[*]- `p = &a`
这个语句和上面那个非常相似,但是在不使用解引用符(`*`)时,`p`指向数组`a`的第一个元素的地址,不能直接访问该元素的值。如果想访问它的值,需要使用解引用符(`*p`)。

[*]- `*p = a`

这个语句将指针`p`所指向的内存地址赋值为`a`的值。使用解引用符(`*p`)可以通过该指针访问被赋值的变量。

[*]- `p = a`

这个语句将指针`p`赋值为数组`a`的首地址,即`a`的地址,可以使用指针来遍历整个数组。使用解引用符(`*p`)加上偏移量(如`*(p+1)`表示`a`)可以访问数组中的元素。


求最佳答案{:10_254:}

tomok 发表于 2023-6-9 07:16:42

在C语言中,数组名可以被解释为数组第一个元素的地址。
关键!
页: [1]
查看完整版本: 在指针与数组中这几种赋值怎么区分