栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【Linux——C语言之指针基础复习】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【Linux——C语言之指针基础复习】

 1)首先,关于C语言指针的复习,首先得知道C语言的每种类型,在内存中大小是怎么样的,如果忘记的话,可以利用sizeof函数进行查看大小即可。

2)其次,定义一个指针,用*号去定义,它与后边的*p不一样,后边是直接取地址里对应的值出来。

3)然后,关于指针变量的类型,分为两种,一种是自身的类型,一种是指向的类型,指向的类型决定了所取空间内容的长度,就是可以取多少字节的空间,以及一次偏移的大小是多大的。

#include 

void test01()
{
    //基本类型double float long int short char
    //分别占用8字节、4字节、4字节、 4字节、2字节、1字节
    char ch;
    printf("sizeof(ch) = %dn",sizeof(ch));

    short k;
    printf("sizeof(k) = %dn",sizeof(k));

    int num;
    printf("sizeof(num) = %dn",sizeof(num));

    long l;
    printf("sizeof(l) = %dn",sizeof(l));

    float m;
    printf("sizeof(m) = %dn",sizeof(m));

    double b;
    printf("sizeof(b) = %dn",sizeof(b));
}

void test02()
{

        
    int num = 10;
    printf("%pn",&num);
    //取地址用&
    //&num代表变量num的起始地址
 
    int *p =NULL;
    printf("sizeof(p) = %dn",sizeof(p));
    //定义一个指针变量,来保存num的地址
    //在定义的时候:*号说明p是指针变量
    

    p=#
    //num的地址与p建立关系
    printf("num = %dn",num);

    printf("*p = %dn",*p);
    //使用*p 表示取保存的地址编号 对应空间的内容
}

void test03()
{
    int num = 100;
    int *p = #
    //指针变量两种类型:自身的类型  指向的类型
         //自身的类型:将变量去掉即可 
             //p自身的变量就是 int *
        //指向的类型:在指针变量定义的时候将 变量名和离它最近的一个*一起去掉即可
            //p指向的类型是 int 
        //指针变量指向的类型的作用:决定了指针变量 所取空间内容的宽度(指针变量的跨度)

    printf("&num = %un",&num);
    //打印num地址3212921248

    printf("p = %un", p);
    //打印p地址3212921248

    printf("p+1 = %un", p+1);
    //打印地址p+1 = 3212921252
    //由上面可以知道,指针变量指向的类型为int,所以一次偏移4字节

    char *q = #
    printf("&num = %un",&num);
    //打印num地址3215036956


    printf("q = %un", q);
    //打印p地址3215036956


    printf("q+1 = %un", q+1);
    //打印地址p+1 = 3215036957
    //由上面可以知道,指针变量指向的类型为char,所以一次偏移1字节
    printf("*q = %dn",*q);
    //结果为100
   
}
void test04()
{

    int num = 0x01020304;

    int *p = #
    printf("*p = %#xn",*p);
    //*p = 0x1020304

    char *q = #
    q+=1;
    //一次偏移一个字节
    printf("*q = %#xn",*q);
    //*q = 0x03

    short *k = #
    k+=1;
    //一次偏移两个字节
    printf("*k = %#xn",*k);
    //*q = 0x0102
   



}





int main()
{
       
    // test01();
    // test02();
   // test03();
     test04();
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/983480.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号