美文网首页
透彻理解指针的概念

透彻理解指针的概念

作者: 小雨Coding | 来源:发表于2017-04-29 21:54 被阅读0次

1.CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。

#include <stdio.h>
int main(){
    int a = 100;
    char str[20] = "tanyusheng";
    printf("%#X, %#X\\n", &a, str);
    return 0;
}

2.需要注意的是,虽然变量名、函数名、字符串名和数组名在本质上是一样的,它们都是地址的助记符,但在编写代码的过程中,我们认为变量名表示的是数据本身,而函数名、字符串名和数组名表示的是代码块或数据块的首地址。

定义指针变量的方式:
datetype *name;
datetype *name=value;

//定义普通变量
float a = 99.5, b = 10.6;
char c = \'@\', d = \'#\';
//定义指针变量
float *p1 = &a;
char *p2 = &c;
//修改指针变量的值
p1 = &b;
p2 = &d;

是一个特殊符号,表明一个变量是指针变量,定义 p1、p2 时必须带。而给 p1、p2 赋值时,因为已经知道了它是一个指针变量,就没必要多此一举再带上,后边可以像使用普通变量一样来使用指针变量。也就是说,定义指针变量时必须带,给指针变量赋值时不能带*。

4.通过指针变量取得数据

#include <stdio.h>
int main(){
    int a = 15;
    int *p = &a;
    printf("%d, %d\\n", a, *p);  //两种方式都可以输出a的值
    return 0;
}

假设 a 的地址是 0X1000,p 指向 a 后,p 本身的值也会变为 0X1000,p 表示获取地址 0X1000 上的数据,也即变量 a 的值。从运行结果看,p 和 a 是等价的。

5.在不同从场景中含义不同,定义指针变量时表示这是一个只能变量,与普通变量区分开来;获取指针变量时前面加*表示获取指针所指向是数据,或者说表示指针指向数据发本身。

6.给指针变量赋地址值时不能加*号

相关文章

  • 透彻理解指针的概念

    1.CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接...

  • C Language -- Lecture 5

    回顾 上节课我们讲了指针和数组。 指针的概念是一个非常重要、也是非常难以理解的概念。理解了指针就理解了C语言的精髓...

  • C语言入门之指针

    目的: 通过以下学习,希望能理解指针的概念,理解指针和数组的关系,理解指针的定义,掌握指针的用法。 1. 简述 用...

  • 冯总的心理表征

    1.理论指导实践,实践又反过来反思理论;对一个概念和知识点的理解非常透彻。 2.他对概念的边界理解非常透彻,对概念...

  • 9/20

    上午张老师给我们介绍了指针概念和指针变量。还是容易理解的。只要理解指针就是一个地址就可以了。还介绍了指针的一些运算...

  • C语言指针概念的理解

    前言 最近真的是忙的不可开交,公司一直给安排任务,连学习和写笔记的时间都没有了,落下好几次课的笔记都没有写,所以我...

  • 9/23

    今天老师详细讲解了指针的用法,包括指针的意义,指针数组,行指针等概念。还是比较容易理解的,但是用起来就不那么自如了...

  • 2017年9月23日

    今天学了指针,关于一维数组,以及多维数组的用法。我对函数以及指针都了解的不够透彻,觉得很难理解或许是没有真正的了解...

  • golang 指针浅析

    指针这个东西,不管是在哪个语言里,都算是比较难懂的概念,其实只要解释清楚,指针的概念并不难理解。 golang中打...

  • 别把不懂装成懂得

    别把自己理解不够透彻的概念装作自己已经理解透彻,然后贸然行动,要抱着一颗不断学习的心态对待自己还不是很熟悉的事物。...

网友评论

      本文标题:透彻理解指针的概念

      本文链接:https://www.haomeiwen.com/subject/vblttxtx.html