C语言 (3) 在main函数中输出整型、单精度、双精度和字符型变量的字节数,并输出指向整型、单精度、双精度和字符型变量的指针变量的字节数。 并输入以下语句加深对指针和指针变量的理解。 请解释下列数据的输出结果。 int a = 3,b=6; int *p1,*p2, *p3; p1 = &a; p2 = &b; p3 = p1; *p3 = 8;(请理解两者间的差异) printf(“%d %x %x %d %x\n”, a, &a, p3, *p3, &p3); printf(“%d %d\n”,a, b);
时间: 2024-01-11 21:04:23 浏览: 74
在C语言中,可以使用 sizeof 运算符来获取不同类型变量的字节数。具体实现如下:
```c
#include <stdio.h>
int main() {
int a;
float b;
double c;
char d;
int* p1;
float* p2;
double* p3;
char* p4;
printf("int size: %lu\n", sizeof(a));
printf("float size: %lu\n", sizeof(b));
printf("double size: %lu\n", sizeof(c));
printf("char size: %lu\n", sizeof(d));
printf("int pointer size: %lu\n", sizeof(p1));
printf("float pointer size: %lu\n", sizeof(p2));
printf("double pointer size: %lu\n", sizeof(p3));
printf("char pointer size: %lu\n", sizeof(p4));
return 0;
}
```
关于输出结果的解释如下:
- `a`: 整型变量 a 的值
- `&a`: 整型变量 a 的地址
- `p3`: 指向整型变量 a 的指针变量 p3 的值,即 a 的地址
- `*p3`: 指针变量 p3 所指向的整型变量 a 的值,此时为 8
- `&p3`: 指针变量 p3 的地址
输出结果为:
```
int size: 4
float size: 4
double size: 8
char size: 1
int pointer size: 8
float pointer size: 8
double pointer size: 8
char pointer size: 8
```
解释输出结果:
- 整型变量 a 和 b 的值分别为 3 和 6
- 执行 `p3 = p1;` 后,指针变量 p3 和 p1 指向了同一个地址,即整型变量 a 的地址
- 执行 `*p3 = 8;` 后,通过指针变量 p3 修改了整型变量 a 的值为 8
- 第一个 printf 语句中,`%d` 打印整型变量 a 的值,`%x` 打印整型变量 a 的地址,`%x` 打印指针变量 p3 的值,即整型变量 a 的地址,`%d` 打印指针变量 p3 所指向的整型变量 a 的值,即 8,`%x` 打印指针变量 p3 的地址
- 第二个 printf 语句中,`%d` 打印整型变量 a 的值,`%d` 打印整型变量 b 的值
阅读全文