gpt4 book ai didi

C程序为什么 "a"的值也变了

转载 作者:太空宇宙 更新时间:2023-11-04 00:48:34 25 4
gpt4 key购买 nike

#include <stdio.h>

int main( int argc, char *argv[] )
{
int a[3][3] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
int *b = a[1];
b[2] = 99;
for ( int i = 0; i < 3; i++ )
{
printf( "%d,", a[1][i] );
}
}

输出为:4,5,99,

#include <stdio.h>

int main( int argc, char *argv[] )
{
int a[3] = { 1, 2, 3 };
int b = a[1];
b = 99;
for ( int i = 0; i < 3; i++ )
{
printf( "%d,", a[i] );
}
}

输出为:1,2,3

为什么我得到如此不同的结果?我认为第一部分a也应该保持不变

最佳答案

int *b = a[1] 执行时,b 指向与 a[1] 相同的内存位置 ],即 int[3]。因此,当您更新 b[2] 时,a[1][2] 也会更新。

在第二种情况下,int b = a[1]b 设置为与 a[1] 相同的 ],但是在不同的内存位置,所以当 b 更新时,a 没有。

我会阅读更多有关 C 中指针如何工作的信息。

关于C程序为什么 "a"的值也变了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27836304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com