sách gpt4 ai đã đi

Tại sao đối với con trỏ *p, p[0] là địa chỉ được lưu trữ trong p và p[1] là địa chỉ của chính p?

In lại 作者:行者123 更新时间:2023-12-05 08:45:40 25 4
mua khóa gpt4 Nike

Mã số

int n = 25;  
int *p = &n;
printf("%x\n %d\n %x\n", p, p[0], p[1]);

返回:

\
25
\

当然我永远不会这样做,但在 K&R 中声明

"if pa is a pointer, expressions may use it with a subscript; pa[i] is identical to *(pa+i).

所以我很好奇。

1 Câu trả lời

这个声明

printf("%x\n %d\n %x\n", p, p[0], p[1]);

由于两个原因调用未定义的行为。

第一个是要输出指针,您应该使用正确的转换说明符。第二个是你不能取消引用像这样的 p[1] 没有指向有效对象的指针。

相反,你可以这样写

printf("%p\n %d\n %p\n", ( void * )p, p[0], ( void * )( p + 1 ) );

关于c - 为什么对于指针 *p,p[0] 是存储在 p 的地址而 p[1] 是 p 本身的地址?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71931236/

25 4 0
行者123
Hồ sơ cá nhân

Tôi là một lập trình viên xuất sắc, rất giỏi!

Nhận phiếu giảm giá Didi Taxi miễn phí
Mã giảm giá Didi Taxi
Giấy chứng nhận ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com