02_指针入门与基本数据类型

指针入门与基本数据类型

1. 说明C语言代码块结构

#include <stdio.h>
// <> 寻找系统的资源
// “” 寻找我们自己写的资源
// .h .hpp:(声明文件/头文件)声明文件还没有实现
// .c(C语言) .cpp(C++语言):(c或c++的实现文件)

// 代码结构
int mainT1() {  // 函数的主入口
    printf("你好,世界!\n");
    getchar();  //阻塞函数,让程序停留
    return 0;
}

2. 基本数据类型占位

#include <stdio.h>

//基本数据类型
int mainT2() {
    short s = 100;
    int i = 100;
    long l = 100;
    float f = 100;
    double d = 100;
    char c = 'd';
    char* str = "Leo";  //字符串

    //不是随便打印的,需要占位
    printf("c的值是:%c\n", c);  // c == char
    printf("s的值是:%d\n", s);  // d == 整形
    printf("i的值是:%d\n", i);  // d == 整形
    printf("l的值是:%d\n", l);  // d == 整形
    printf("f的值是:%f\n", f);  // f == float
    printf("d的值是:%lf\n", d);  // lf == long float
    printf("str的值是:%s\n", str);  // s == String
}

3. 基本类型占用的字节数

#include <stdio.h>
//基本数据类型占用的字节数(后续过程中,非常常用的)  sizeof获取字节数
int main() {
    //char 占几个字节 == 1
    //int 占几个字节 == 4
    //double 占几个字节 == 8
    printf("char 数据类型所占的字节数:%d\n", sizeof(char));// 1
    printf("int 数据类型所占的字节数:%d\n", sizeof(int));// 4
    printf("double 数据类型所占的字节数:%d\n", sizeof(double));// 8
    return NULL; // NULL == 0
}

4. 初次感受,万物皆地址

#include <stdio.h> // C99 标准库
// 地址概念
// Java 万物皆对象
// C C++(对象) 万物皆指针
// Linux 万物皆文件
int mainT4() {
    // 指针 == 地址

    // %p == 地址输出的占位
    // & == 取出地址
    int number1 = 100000;
    printf("此number1变量的地址是:%p\n", &number1); // 地址 == 00B3FE90
    return 0;
}

在这里插入图片描述

#include <stdio.h>

int mainT5() {
    int number_int = 100;
    double number_double = 200;
    printf("number_int的值是:%d\n", number_int);
    printf("number_double的值是:%lf\n", number_double);

    // * == 取出number_int地址所对应的值 == 100
    // 指针取出值
    // 既然任何变量都是地址,可以使用地址获取值(灵感)
    printf("number_int的值是:%d\n", *(&number_int));
    printf("number_double的值是:%lf\n", *(&number_double));

    //   ================   难度

    int * intP = &number_int;
    double * doubleP = &number_double;

    // 输出 100  和 200
    printf("number_int的值是:%d\n", *intP);
    printf("number_double的值是:%lf\n", *doubleP);

    // 概念
    /**
        同学们:如果你去上网查询,指针的文章,就会发现,一些专业术语,导致大学老师一直说不清楚,成功劝退很多学生放弃:
        内存地址变量,内存地址别名,指针,指针变量,指针别名,.... 一大段的专业术语 ...

        理解:  大道至简 (化繁为简)

        内存地址 == 指针
        指针 == 内存地址
        int * (int类型的指针),  double * (double类型的指针)

        指针别名,指针变量 == 就是一个变量而已,只不过 是指针的 变量 而已
        intP,  doubleP
     */
}

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

// 通过指针(地址)修改值
// 其实不用指针直接修改值也是可以的,但是在其他应用会出现各种问题.
// 所以C语言还是用指针更好更规范.
int mainT6() {
    int i = 100;
    // p:我只接收地址,你给我一个100,不规范
    // int * p = i;
    int * p = &i;
    i = 200;
    printf("i的值是:%d\n", i);
    *p = 300;
    printf("i的值是:%d\n", i);
}

在这里插入图片描述

#include <stdio.h>

// C语言不允许函数重载,    Java可以,C++可以
// void change(int i);
void change(int * i);

// 函数 取修改一个数(指针操作)
int mainT7() {
    int i = 100;
    change(&i);
    printf("%d\n", i);
    /*
        int * i;  定义指针
        *i = 888;  取出内存地址所对应的值修改成 888
    */
    return 0;
}

/*void change(int i) {
    printf("change内存地址:%p\n", &i);
    i = 200;
}*/

// 使用指针 来修改
void change(int * i) {
    *i = 666;
}


//#include <stdio.h>
//int main() {
//    change();
//    return 0;
//}
//函数不能写在main的下面,会报错
//(因为C是阶段性的语言,即面向过程的)
//void change() {}
//=====================================
//如果非要写在后面,可以先声明再实现)
//1.先声明
//void change();
//#include <stdio.h>
//int mainT7() {
//    change();
//    return 0;
//}
//2.再实现
//void change() {printf("leo");}

在这里插入图片描述
在这里插入图片描述

#include <stdio.h>

// 由于C语言不支持函数重载,所以声明的函数,不需要写参数

void changeAction();

int mainT8() {
    int a = 100;
    int b = 200;
    printf("交换完成前的效果:%d,%d\n", a, b);
    changeAction(&a, &b);
    printf("交换完成后的效果:%d,%d\n", a, b);
}

// 只接收指针(内存地址)    内存地址 == 指针
void changeAction(int * a, int * b) {
    int temp = *a;
    *a = *b;
    *b = temp;
}

在这里插入图片描述

链接:https://pan.baidu.com/s/1dWsgE_w3vCXU6MG-5kWHKQ
提取码:9vu5 破解版
答疑:
1.函数声明不需要写行参吗?
答:由于C语言不支持函数重载,所以声明的函数,不需要写参数
2.Main函数要不要返回?
答:跟工具有关系。
3.*a是a所在地址的值 &a就是a所在的地址 对吗?
答:对的。

&取地址,是指针*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

左绍骏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值