C语言的指针(基础篇章)

作者: 遮天的龙 | 来源:发表于2016-05-27 23:20 被阅读668次

一、内存与指针

**内存是以字节为单位进行编址的,内存中的每个字节都对应一个地址,通过地址才能找到每个字节。而我们常说的变量,变量的内存地址就是变量的指针。切记,指针是有类型地址常量。
**

  内存的快捷方式——指针

定义指针变量的一般形式:

 type *  variable  (指向数据类型 *指针变量名)

二、指针变量

  • 重点就是区分一下下面的本质区别:
    在int var中; var、&var、var 者的区别?
    var——指针变量
    &var——对指针变量取地址
    *var——取指针变量地址所指向地址的内容
  • 给个例子:输入两个整数,存储在变量a和b中,当a小于b时,使用指针交换a和b并输出。
    这时大脑要有逻辑思想(以图形的形式吧):
**p1指向a,p2指向b** 交换

三、指针的运算

指针运算的本质是指针中存储的地址的运算。

  • eg:p+n、p-n、p++、p--、++p和--p等,其中n是整数。
    解释:将指针p加上或者减去一个整数n,表示p向地址增加或减小的方向移动n个元素单元,从而得到一个新的地址,使能访问新地址中的数据。每个数据单元的字节数取决于指针的数据类型。
    #include<stdio.h>
    int main(void)
    {
    char p = (char)0x1234; //十六进制的地址
    printf("%x\n",p);
    printf("%x\n",p+2);
    printf("%x\n",p+4);
    return 0;
    }

四、指针的一些基础小结

  • 指针变量的初始化问题小结:
    指针变量在使用前必须要初始化,把一个具体的地址赋给它,否则引用时会有副作用,如果不指向任何数据就赋“空值”NULL。
  • 变量与指针变量:
    变量的实质是代表“内存中的某个存储单元”。指针变量是用来存储地址,而一般变量是存储数值的。指针变量可指向任何一种数据类型,但不管它指向的数据占用了多少字节,一个指针变量占用4个字节。
  • 数组名与指针变量:
    数组名是一个常量,不允许重新赋值。
    指针变量是一个变量,可以重新赋值。

相关文章

  • C语言的指针(基础篇章)

    一、内存与指针 **内存是以字节为单位进行编址的,内存中的每个字节都对应一个地址,通过地址才能找到每个字节。而我们...

  • JNI开发系列①JNI概念及开发流程

    接续上个系列C语言基础及指针 引言 在学习了C语言基础之后 ,我们简单的了解了C语言编程的一些范式 , 了解了指针...

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

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

  • C语言基础及指针⑤动态内存分配

    接续上篇C语言基础及指针④函数指针 在上一篇我们了解C语言中的函数及函数指针 , 使用函数指针 , 模拟了网络请求...

  • 大牛查漏补缺 -- C语言注意点

    前言:C语言是Java、Objective-C、C++等高级语言的基础、也是跨平台开发的基础,指针是C语言的重中之...

  • C语言基础及指针②之指针内存分析

    续接上篇 C语言基础及指针① 在上一篇中 , 我们了解了C语言的基本语法 , 以及简单指针 , 也知道 , 指针是...

  • C语言基础-指针

    1)声明一个int类型的变量int a = 10;声明一个指针指向这个常量的地址int * b = &a;使用指针...

  • C语言指针基础☀️

    版权声明:本文为博主原创文章,未经博主允许不得转载。 C语言指针前导程序 int a=10; int *p;//定...

  • NDK开发--C语言指针(数组指针,函数指针)

    上一节 C语言基础部分我们了解了C语言中的指针知识,这一节我们开始深入指针的学习,重点是数组指针,函数指针。 第一...

  • iOS开发系列文章[转]

    C语言 iOS开发系列--C语言之基础知识 iOS开发系列--C语言之数组和字符串 iOS开发系列--C语言之指针...

网友评论

  • ca07d10124a0:写太简单,且不严谨。
    遮天的龙: @小狼小股仙淼彦IF 嗯。会改善的。谢谢。
  • 阿群1986:能否创建一个指向自身的指针?
    遮天的龙:@阿群1986 哈哈。看来你也是大神来着。
    阿群1986:@阿群1986 再创建一对互相指向对方的指针

    void *p1=NULL;
    void *p2=NULL;

    p1 = &p2;
    p2 = &p1;
    阿群1986:void *p=NULL;
    p=(void *) (&p);

本文标题:C语言的指针(基础篇章)

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