Ari*_*sen 11 c++ pointers reference dereference
刚进入C++.当我看到multiply(*
)的符号被用来表示变量的解引用时,我会不断地偏离轨道
例如:
unsigned char * pixels = vidgrabber.getPixels();
这会让其他人失望吗?让我了解这个问题的秘诀是什么?
谢谢.
ps我有另一个相当简单的问题,但没有得到答案:(这里:初学者问题:加/减价值而不仅仅是那个价值请!谢谢你的时间!
sbi*_*sbi 19
C, and by inheritance C++, are swamped with operators and are inherently context-sensitive. You will have to get used to it:
如果*
出现在正在声明(或定义)的变量的名称之前,则它是一个类型修饰符,并使该变量成为指针.
如果它是作为表达式一部分的变量的一元前缀运算符,则它是解除引用(或者它被重载到的任何内容).
如果它是作为表达式一部分的两个变量的二进制中缀运算符,则它是乘法(或者它被重载到的任何变量).
(从这里你可以看到*
你unsigned char * pixel
的不是一个解除引用的一元前缀,而是一个类型修饰符.)
请注意,&
非常类似*
,只是它的含义不同:它使变量成为引用,是运算符的地址,或二进制AND.
编写自己的代码时的一个建议是在用作指针/ deref时"拥抱"*:
unsigned char *pixels = ...
if (*pixels == ...)
Run Code Online (Sandbox Code Playgroud)
并在用作乘法时将*分隔:
int y = x * 7;
Run Code Online (Sandbox Code Playgroud)
您可以使用其他线索(例如指针deref是一元运算符而多个是二元运算符的事实).