C Primer Plus笔记

整数和浮点数的存储结构

按计算机的储存方式可以分为两大基本基类:整数类型和浮点数类型

位,字节,字

最小的存储单元是位,可以存储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先递增后指向】

猜你喜欢

转载自blog.csdn.net/Mai_Dreizehn/article/details/85615976
今日推荐