整数和浮点数的存储结构
按计算机的储存方式可以分为两大基本基类:整数类型和浮点数类型
位,字节,字 |
最小的存储单元是位,可以存储0,1.位是计算机内存的基本构建快 字节(byte)是常用的计算机存储单位。1字节8位 字(word)是设计计算机时给定的自然存储单位,对于8位的微型计算机,1个字长只有8位。计算机的字长越大,其数据转移越快,允许的内存访问也更多。 |
对于一些算术运算,浮点数损失的精度更多
查找地址:&运算符
如果主调函数不使用return返回的值,则必须通过地址才能修改主调函数中的值。
一元&运算符给出变量的存储地址(可以把地址看作是变量在内存中的位置)
#include<stdio.h>
int main(void)
{
int pooh = 2,bah = 5; /*main()的局部变量*/
printf("In main(),pooh = %d and &pooh = %p\n",pooh,&pooh);
printf("In main(),bah = %d and &bah = %p\n",bah,&bah);
mikado(pooh);
return 0;
}
void mikado(int bah)
{
int pooh = 10;
printf("In mikado(),pooh = %d and &pooh = %p\n",pooh,&pooh);
printf("In mikado(),bah = %d and &bah = %p\n",bah,&bah);
}
间接运算符:*
假设已知ptr指向bah
ptr = &bah;//把ptr指向bah,现在ptr的值是bah的地址
然后使用简介运算符* 找出储存在bah中的值,该运算符也称为解引用运算符。
val = *ptr;//找出ptr指向的值
语句ptr = &bah;和 val = *ptr;放在一起相当于: val = bah
声明指针
声明指针变量时必须指定指针所指向变量的类型,因为不同的变量类型占用不同的存储空间,一些指针操作要求指导操作对象的大小。
使用指针在函数间通信
#include <stdio.h>
int main()
{
int x = 5, y = 10;
printf("Originally x = %d and y = %d. \n",x,y);
interchange(&x,&y); //把地址发送给函数
printf("Now x = %d and y = %d.\n",x,y);
return 0;
}
void interchange(int * u ,int * v) //声明u,v是指向整数的指针
{
int temp;
temp = *u; //*u表示*u的值
//yemp = u; 赋给temp的是x的地址
*u = *v; //x=y
*v = temp
}
如果要在被调函数中改变主调函数的变量,则使用第2种形式
函数,数组和指针
*start++: *和++的优先级相同,但结合律是从右往左,所以start++先求值,然后才是*start,【指针start先递增后指向】