如果我们在地址上使用递增/递减,会改变什么值?

时间:2017-11-10 05:59:27

标签: c++ reference

LocationManager lm = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
    try {
        gps_enabled = lm.isProviderEnabled(LocationManager.GPS_PROVIDER);
    }catch (Exception ex){}
    try{
        network_enabled = lm.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
    }catch (Exception ex){}
    if(!gps_enabled && !network_enabled){
        AlertDialog.Builder dialog = new AlertDialog.Builder(this);
        dialog.setMessage(getResources().getString(R.string.gps_network_not_enabled));
        dialog.setPositiveButton(getResources().getString(R.string.open_location_settings), new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {                 
                Intent myIntent = new Intent( Settings.ACTION_LOCATION_SOURCE_SETTINGS);
                Startup.this.startActivity(myIntent);                    
            }
        });
        dialog.setNegativeButton(getString(R.string.Cancel), new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface paramDialogInterface, int paramInt) {
                // TODO Auto-generated method stub

            }
        });
        dialog.show();
    }

这是我非常困惑的部分,我知道如果我不把(a--)语句输出为5.但是a / / ++的含义真正背后的原因有时会给我不同的价值因为我用不同的价值测试它。我偶然发现了这个。

#include <iostream>
using namespace std;

void test(int x, int *y) {

*y = 5;

}

int main() {
int *a ,b =2 ;
a = &b;

test(*a, a);
a--; // a++ also give different value

1 个答案:

答案 0 :(得分:1)

包含指向变量的内存指针。所以它是* a = 5,如果你递增/递减a,那么它将指向内存中具有一些垃圾值的其他地址/位置。这就是你得到的。

让我们说 a - &gt; [2000] //包含值5的内存地址 如果你做一个++ / a--那么a将指向内存中的[2004] / [1996]位置 这有一些垃圾价值。