gpt4 book ai didi

c - 为什么指针值有时为负数?

转载 作者:行者123 更新时间:2023-11-30 19:30:24 25 4
gpt4 key购买 nike

我尝试了《理解和使用 C 指针》(Reese)书中的以下代码示例,该示例说明了将二维数组指针传递给函数:

void display2DArray(int arr[][5], int rows) {
for (int i = 0; i<rows; i++) {
for (int j = 0; j<5; j++) {
printf("%d", arr[i][j]);
}
printf("\n");
}
}

void main() {
int matrix[2][5] = {{1, 2, 3, 4, 5},{6, 7, 8, 9, 10}};
display2DArray(matrix, 2);

当我在执行期间使用 gdb 调试器检查 arr 变量时,我得到:

(gdb) p arr
$156 = (int (*)[5]) 0x7fffffffe1c0
(gdb) p &arr
$157 = (int (**)[5]) 0x7fffffffe198
(gdb) p *0x7fffffffe198
$158 = -7744

这个负数-7744是多少?

我认为取消引用地址 0x7fffffffe198 应该产生 0x7fffffffe1c0

最佳答案

What is this negative number -7744?

是FFFFFFFFFFFFFE1C0的十进制转换。

I thought that dereferencing the address 0x7fffffffe198 should yield 0x7fffffffe1c0?

是的,但是它被转换为十进制表示形式。

内存地址不是负数,但用于表示内存位置的数据类型可以是负数。

关于c - 为什么指针值有时为负数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51090522/

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