这会有用吗? 我希望
@Column(length = 65535, columnDefinition = "text")
private String biography;
与
相同foo(myArraypointer + 10);
对于大多数编译器来说,它会被视为相同吗?这被认为是好的还是坏的做法,为什么?可能出现什么问题?
答案 0 :(得分:4)
对于任何指针或数组a
和索引i
,表达式a[i]
等于*(a + i)
。这意味着&a[i]
等于&*(a + i)
,其中最后一个可以缩短为a + i
。
答案 1 :(得分:2)
它们与C标准所要求的完全相同。请注意,编译器在获取其地址之前不得评估数组索引:即即使数组元素未初始化,表达式也已明确定义。
我更喜欢第一个。它更清晰,对C ++代码更友好,可能会为您的类型重载运算符的地址。我已经做过的非初始化点实际上就是酒吧测验。
答案 2 :(得分:0)
它们都与第一个foo(myArraypointer + 10);
中的相同,它访问myArraypointer
这是变量的基地址,+ 10将地址从基地址增加到第10个位置。
递增或递减指针的地址取决于指针Variable的数据类型。即如果指针是字符类型,它将递增/递减1。
如果myArraypointer
指向地址为1000的字符,则递增1将指向位置1001,但如果myArraypointer
指向一个地址为1000的整数,则递增1将指向该位置1002(1000 + 2)。对于漂浮也像这样。