美文网首页
c语言指针

c语言指针

作者: 温岭夹糕 | 来源:发表于2020-03-30 09:28 被阅读0次

参考c语言中文网:http://c.biancheng.net/view/1990.html

计算机中所有的数据都必须放在内存中,不同类型的数据占用字节数不同,为了正确地访问或找到这些数据,必须为每个字节都编上号码(采用16进制),每个字节的编号都是唯一的,像身份证一样

我们将内存中字节的编号称为地址或指针

数据在内存中的地址也称为指针,如果一个变量存储了一份数据的指针,我们就称它为指针变量。

以%#X或%p形式来输出&变量的地址。

C语言用变量来存储数据用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用

变量->数据

函数->代码

指针 == 16进制编号

数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是数据还是代码。当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据

CPU 只能通过地址来取得内存中的代码和数据,程序在执行过程中会告知 CPU 要执行的代码以及要读写的数据的地址。

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

*称为指针运算符,既用来定义一个指针变量(用来区分普通变量)也用来取得某个地址上的数据(取值)

int a=100; // a的地址为0x1000

int *p=&a; // p的值为0x1000,此时为定义

printf("%d\n",*p);

 //表示对该地址取值 即 *p == a 为true


关于指针(编号)的加减

对地址的加减涉及到定义指针变量时的变量类型

int a=100 ,*p = &a;

printf("%p\n",p); //地址为0x1000

p++;  //  p++  != *p++

printf("%p\n",p); //地址为0x1004

因为int占4个字节,对整型变量指针+1就为跳过4个字节


数组的特殊性

数组在内存中一块连续的内存,数组名就是指针?

(数组等价于指针,这是不完全正确的,但大多数情况下可以这样认为)

它指向数组的第0个元素

int a[] = {1,2,3}

printf("%p  %p\n",a,&a[0])

注: int  *p = a ;等价于 int *p = &a[0]

借由这个特性我们可以推导出对数组名+1就是让指针向后移动一位

printf("%d\n",*(a+1)); // *表示对地址取值,此时为a[1]

相关文章

  • C语言05- 指针

    C语言05- 指针 13:指针 指针是C语言中的精华,也是C语言程序的重点和难点。 13.1:指针定义与使用 指针...

  • 02-C语言的指针

    02-C语言的指针 目标 C语言指针释义 指针用法 指针与数组 指针与函数的参数 二级指针 函数指针 指针在C中很...

  • C语言指针总结大学霸IT达人

    C语言指针总结大学霸IT达人 C语言的指针是C语言区别其它语言的最主要的特定之一。有了指针,C语言就可以抛开所有束...

  • 带小白学C语言指针

    C语言里指针才是C语言的开始和指针;C语言里基本所有东西都是由指针演变而成; 指针是指向地址的变量,类型就是指针...

  • 在Swift中使用C语言的指针

    在Swift中使用C语言的指针 在Swift中使用C语言的指针

  • [Swift]结构体指针操作

    C语言的指针操作 在c语言中申明一个变量并通过指针修改该变量的值 a value is 2 c语言操作结构体指针操...

  • Go语言-指针

    Go语言中的指针不同于C语言,Go语言的指针使用方法要简单很多。当然和C语言从指针定义到指针的使用都有很大的不同。...

  • C语言中的指针与数组

    C语言中的指针与数组 @(C语言)[排序算法, 快速排序, C实现] 引言 相信指针与数组是不少同学在初学C语言时...

  • 指针数组和数组指针

    指针数组|存储指针的数组 在C语言和C++语言中,数组元素全为指针的数组称为指针数组。 例如:int *p[10]...

  • iOS开发 -- C语言基础8(指针)

    iOS开发 -- C语言基础8(指针) 指针是C语言中非常重要的数据类型,如果你说C语言中除了指针,其他你都学得很...

网友评论

      本文标题:c语言指针

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