关于#c++#的问题:请问int k=i和intk=&i的区别

请问int * k=i和int * k=&i的区别?
int * k=&i声明了一个指针k,指向i,k中存放的是i的地址吗?

参考GPT和自己的思路:

int k=i是将i的值赋给变量k,k中存放的是i的值。
int * k=&i是声明了一个指针k,指向i,k中存放的是i的地址。
因此,int * k=&i声明了一个指针k,指向i,k中存放的是i的地址。

这个要看i是什么,如果i是指针,那么就是第一种,如果i是值,就是第二种

// 如果 i是int型的话,int * k = &i ,这是k指向i,k里面存的是i的地址。
//  int *k = i,这两者类型不匹配,硬要赋值,需要强转,把i这个值强转成int *
int *k = (int *)i;  // 把i这个值当成地址

在C++中,int k=i和int k=&i是两个不同的语句,它们的含义如下:

  • int k=i:这是一个定义变量k并将其初始化为i的语句,即将i的值赋给k。这种情况下,k是一个普通的整数变量,它会在内存中分配一块空间用于存储i的值。此时,k和i是两个独立的变量,它们的值可以相同也可以不同。
  • int k=&i:这是一个定义指针变量k并将其指向i的地址的语句,即将i的地址赋给k。这种情况下,k是一个指向整数变量i的指针,它存储的是i在内存中的地址。此时,k和i关联在一起,它们的值是相同的,任何对k的修改都会影响到i的值。

因此,int k=i和int k=&i的区别在于前者定义的是一个普通变量,后者定义的是一个指针变量。在使用上,前者可以直接使用变量名k来访问其值,后者需要通过指针运算符来访问i的值,如:k。同时,指针变量k还可以被用来访问i以外的其他变量的值,只需要修改k的指向即可。

希望以上解释能够解决您的问题。如有疑问,请随时追问!

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^