理解c指针时难以理解c指针

时间:2015-03-05 14:55:32

标签: c pointers

我正在研究c的指针,这个*的位置确实让我很困惑。

我理解int *a是什么..

但是什么是

a = malloc(n * sizeof(int) ) 

我理解上面做了什么,但为什么*本身就在中间?这部分真让我困惑,所以请有人向我解释一下吗?

6 个答案:

答案 0 :(得分:5)

一元*表示取消引用,二元*表示乘法。

答案 1 :(得分:4)

中间的*是乘法运算符。二进制*运算符的结果是操作数的乘积 不要将它与仅适用于指针对象的一元解引用运算符混淆。

答案 2 :(得分:3)

这里的*非常简单,而且具有讽刺意味的是,在您了解指针之前,确定之前没有问题。现在,C众所周知的混淆语法只会误导你。

*这里只是乘法。 n 的大小是 int 的大小,它对应于能够存储 n 的内存块的分配INT 取值

通过解引用运算符告诉乘法运算符的一种简单方法是乘法应该具有两个操作数,因此a = b * c显然是乘法。虽然解除引用运算符只有一个操作数,但是:a=*b*此处仅适用于 b )。

答案 3 :(得分:1)

*运算符用于乘法和解除引用指针

int b=10;
int *a = &b;

*a取消引用指针,其中*是一元运算符

int c = b * 10;

此处*执行乘法,其中*是二元运算符

答案 4 :(得分:0)

那用来乘以数值。 5*5将生成25. int *a;是指向a的指针,而a*a 乘以a

答案 5 :(得分:0)

只是为了简化。 *在变量(或等)之前使用而没有任何其他变量(或等)就在它之前,它是一元运算符,它只是“影响”一个单个变量(或等)。请参阅以下示例:

int *a = 1  

另一个:

a = b + *c

请注意,在最后一个示例中,我们在*之前有一个变量但在它之前没有变量,在它们的中间有一个加号(+)。

但如果你在*之前有一个变量(或等),它就是一个二元运算符,它会“影响”两个变量(或者等等)。

a = b * *c

看,我在这里使用其中两个。我将b指向的值分配给a。

希望它可以帮助你更好地解决它。