*p
的值和DIM
的值有何不同,但内存中的地址相同?
const int DIM=9;
const int *p = &DIM;
* (int *) p = 18; //like const_cast
cout<< &DIM <<" "<< p << '\n';
cout << DIM << " " << *p << '\n';
答案 0 :(得分:2)
您正在更改jQuery(document).ready(function($){
$('#add-ingredient').on('click', function(event) {
event.preventDefault();
var lastIngredient = $(this).prev('[class^="ingredient-').attr('class');
var x = lastIngredient.replace('ingredient-', '');
x = parseInt(x) + 1;
var html = '<div class="ingredient-'+ x + '">' +
'<input type="text" name="recipe_ingredients['+ x + '][amount]" id="amount" placeholder="amount" value="<?php echo $recipe_ingredients['+ x + '][amount]; ?>" />' +
'<input type="text" name="recipe_ingredients['+ x + '][unit]" id="unit" placeholder="unit" value="<?php echo $recipe_ingredients['+ x + '][unit]; ?>" />' +
'<input type="text" name="recipe_ingredients['+ x + '][ingredient]" id="ingredient" placeholder="ingredient" value="<?php echo $recipe_ingredients['+ x + '][ingredient]; ?>" />' +
'<input type="text" name="recipe_ingredients['+ x + '][notes]" id="notes" placeholder="notes" value="<?php echo $recipe_ingredients['+ x + '][notes]; ?>" />' +
'</div>';
$(this).before(html);
return false;
});
});
变量的值,即未定义的行为。字面上,当你这样做时,任何事情都可能发生,包括你的程序崩溃,你的计算机爆炸......,
如果变量应该更改,不要使它变为。编译器可以自由地优化对const变量的访问,因此即使您找到了一种更改内存中值的成功方法,您的代码甚至可能无法访问原始内存位置。
答案 1 :(得分:2)
这是一个编译器优化。鉴于DIM是常量,编译器可以替换其已知值。
答案 2 :(得分:0)
下面的代码执行您要执行的操作...如其他帖子中所述,如果您要更改变量的值,请不要将其定义为const
#include <stdio.h>
int main()
{
int d= 9;
int *p_d=&d;
*p_d=18;
printf("d=%d\np_d=%d\n",d,*p_d);
return 0;
}
此代码打印
d=18
p_d=18