补充程序代码,实现如下要求:
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];
#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;
}
不知道你这个问题是否已经解决, 如果还没有解决的话: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