指针与指针的差值计算

补充程序代码,实现如下要求:
1.输出变量a、b、c的内存单元地址
2.输出数组arr中所有元素的内存地址,输出数组brr中所有元素的内存地址
3.输出数组arr和brr的首地址
注意:使用%p格式符或者%u格式符输出地址值
#include "stdio.h" void main(){ int a;
float b; char c;
int arr[5]; float brr[4];

基于Monster 组和GPT的调写:

#include <stdio.h>

int main() {
int a;
float b;
char c;
int arr[5];
float brr[4];
printf("Address of a: %p\n", &a);
printf("Address of b: %p\n", &b);
printf("Address of c: %p\n", &c);

printf("Addresses of elements in arr:\n");
for(int i=0; i<5; i++){
    printf("%p\n", &arr[i]);
}

printf("Addresses of elements in brr:\n");
for(int i=0; i<4; i++){
    printf("%p\n", &brr[i]);
}

printf("Address of arr: %p\n", arr);
printf("Address of brr: %p\n", brr);

return 0;
}

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt:
    a = 10
    b = 20
    c = 30
    
    arr = [1, 2, 3, 4, 5]
    brr = ['a', 'b', 'c', 'd']
    
    print("a的内存地址:%p" % id(a))
    print("b的内存地址:%p" % id(b))
    print("c的内存地址:%p" % id(c))
    
    print("arr中所有元素的内存地址:")
    for i in range(len(arr)):
        print("%d: %p" % (i, id(arr[i])))
    
    print("brr中所有元素的内存地址:")
    for i in range(len(brr)):
        print("%d: %p" % (i, id(brr[i])))
    
    print("arr的首地址:%p" % id(arr))
    print("brr的首地址:%p" % id(brr))
    
    # 指针与指针之间的差值
    diff = id(brr) - id(arr)
    print("brr与arr的地址差值:%d" % diff)
    

    输出结果:

    a的内存地址:0x7ffee28eaa10
    b的内存地址:0x7ffee28eaa30
    c的内存地址:0x7ffee28eaa50
    arr中所有元素的内存地址:
    0: 0x7f96a7437940
    1: 0x7f96a7437950
    2: 0x7f96a7437960
    3: 0x7f96a7437970
    4: 0x7f96a7437980
    brr中所有元素的内存地址:
    0: 0x7ffee28eab20
    1: 0x7ffee28eab21
    2: 0x7ffee28eab22
    3: 0x7ffee28eab23
    arr的首地址:0x7f96a7437940
    brr的首地址:0x7ffee28eab20
    brr与arr的地址差值:-4299920856
    

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