.h 头文件(函数的声明,类型的声明,头文件的包含)
.c 源文件(函数实现)
浮点数的四舍五入,不能用你肉眼看到的数值来计算,因为浮点数在内存中有可能不能精确保存。
内存:
内存是电脑上特别重要的存储器,计算机中程序的运行都是在内存中运行的,为了有效的使用内存,把内存分成了一个个小的内存单元,每个内存单元的大小是一个字节。为了能够有效的访问到内存的每个单元,就给内存单元进行了编号,这些编号被称为该内存单元的地址。
单位:
bit
byte(1byte=8bit)
KB(1KB=1024byte)
MB(1MB=1024KB)
GB(1GB=1024MB)
TB(1TB=1024GB)
PB(1PB=1024TB)
按F10打开vs的调试界面
找到内存,打开,输入内存地址就能查询到相关信息了
#include <stdio.h>int main()
{int a = 1;//向内存申请4个字节,存储1&a;//&——取地址操作符return 0;
}
可以先在调试状态下执行完代码,然后打开监视窗口&a找到a的地址,然后内存窗口查看a的地址的存储情况。
%p—打印地址
每次编译都会重新分配内存空间,所以每次打印的地址可能都不一样。
内存单元有编号,这个编号就是地址,地址也被称为指针。
存放指针(地址)的变量就是指针变量。
int * p = &a;
int 说明p指向的对象是int类型的。
* 说明p是指针变量。
#include <stdio.h>int main()
{int a = 1;//向内存申请4个字节,存储1int * p = &a;//p就是指针变量* p = 20;//*-解引用操作符,意思就是通过p中存放的地址找到p所指向的对象,*p就是p指向的对象printf("%d\n",a);return 0;
}
通过*p可以成功修改a的值
int main()
{printf("%d\n",sizeof(char *));printf("%d\n",sizeof(short *));printf("%d\n",sizeof(int *));printf("%d\n",sizeof(long *));printf("%d\n",sizeof(float *));printf("%d\n",sizeof(double *));return 0;
}
不管是什么类型的指针,都是在创建指针变量,指针变量是用来存放地址的,指针变量的大小取决于一个地址存放的时候需要多大空间。
32位机器上的地址:32bit位---4bit,指针变量大小是4个字节
64位机器上的地址:64bit位---8bit,指针变量大小是8个字节