鱼C论坛

 找回密码
 立即注册
查看: 3346|回复: 3

[学习笔记] 005-指针铁律1:指针是一种数据类型

[复制链接]
发表于 2018-8-3 22:24:07 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 moc 于 2018-8-3 22:27 编辑

1、指针也是一种变量,占用内存空间,专门用于存放内存地址
  1. void main()
  2. {
  3.         char *p1 = NULL;
  4.         char **p2 = NULL;
  5.         char ******p6 = NULL;
  6.         printf("p1:%d\n", sizeof(p1));    // x86下:p1: 4;  x64下:p1:8
  7.         printf("p2:%d\n", sizeof(p2));    // x86下:p2: 4;  x64下:p2:8
  8.         printf("p6:%d\n", sizeof(p6));    // x86下:p6: 4;  x64下:p6:8
  9.         system("pause");
  10. }
复制代码

        指针也是一种数据类型,也占据内存空间,x86下占4个字节,x64下占8个字节;
        不管是多少级指针都一样。
2、*p —>  操作内存
        1. 在指针声明时,*即表明要声明的变量为指针变量
        2. 在指针使用时,*号表示 操作 指针所指向的内存空间中的值

                *p相当于通过地址(p变量的值)找到一块内存;然后操作内存;形象的说,*就像是一把钥匙,p就像是一扇门(地址),用钥匙去打开门去弄门后面的内存空间(变量的值) ; 根据指针变量的值(内存地址),去弄门后面的值,可以拿出(右),也可以放入(左)。
        *p放在=号的左边,去修改内存空间的值;
        *p放在=号的右边,从内存空间去取出值


  1.         int a = 10;
  2.         int b = 0;
  3.         int  *p3 = NULL;  //声明时,标明该变量为指针变量
  4.         a = 20;        //通过变量名(别名)a直接修改内存空间的值
  5.         p3 = &a;
  6.         *p3 = 30;     //通过指针(内存地址)间接修改内存空间的值
  7.         b = *p3;
  8.         system("pause");
复制代码


3、指针变量和它指向的内存块是两个不同的概念
        *含义1  给p赋值p=0x1111; 只会改变指针变量值,不会改变所指的内容;再如:p = p +1; //p++
        *含义2  给*p赋值*p='a'; 不会改变指针变量的值,只会改变所指的内存块的值  
        *含义3  =左边*p 表示 给内存赋值, =右边*p 表示取值内存块的值   含义不同!
        *含义4  =左边char *p
        *含义5  保证所指的内存块能修改    *比如不能修改像NULL所在的内存空间,和一些自己都不知道的地址中写数据。
     char *p = "abcdef"  -->先在内存空间的常量区,开辟空间存放常量"abcdef",再把该字符串的首地址赋值给指针p。


4、指针是一种数据类型,是指它指向的内存空间的数据类型
        含义1:指针步长(p++),根据所致内存空间的数据类型来确定
        p++ 含义为   (unsigned char )p+sizeof(a);
        结论:指针的步长,根据所指内存空间类型来定。

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2018-9-9 22:23:41 | 显示全部楼层
一直在看,觉得好有用,我正在学《数据结构与算法》(考试要求),虽然看得懂,但底子还得打细一点才行。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-9-9 22:38:32 | 显示全部楼层
Kitty喜欢小鱼干 发表于 2018-9-9 22:23
一直在看,觉得好有用,我正在学《数据结构与算法》(考试要求),虽然看得懂,但底子还得打细一点才行。

我后面也会写关于学习数据结构的帖子的,欢迎交流。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-9-10 10:54:59 | 显示全部楼层
moc 发表于 2018-9-9 22:38
我后面也会写关于学习数据结构的帖子的,欢迎交流。

好的,期待楼主的作品!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-22 05:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表