精华内容
下载资源
问答
  • 微机中或者C语言中指针的功能是如何实现的? 2012-07-20 21:06 指针变量和一般变量其实一回事,指针就是一个4byte的无符号整数而已,和一般变量的值的意义不同,它的值的意义就是某一段内存的...

    在微机中或者C语言中指针的功能是如何实现的?

    2012-07-20 21:06

    指针变量和一般变量其实一回事,指针就是一个4byte的无符号整数而已,和一般变量的值的意义不同,它的值的意义就是某一段内存的地址。
    至于取址操作,比如对于
    int *a, b两个变量而言:
    a = &b对应的汇编语言就是
    lea         eax,[b]                          
    mov       dword ptr [a],eax          
    *a = b对应的汇编语言就是
    mov         eax,dword ptr [a]  
    mov         dword ptr [eax],b  
    当然寄存器的选取会随着编译器的不同而不同
    但大致语句就是这样
    展开全文
  • c语言中指针概念

    2012-02-28 15:21:10
     由于在c语言中每个数据类型都必有存储空间,所以指针可以应用于几乎所有的数据类型中。 指针可以分为:  指向变量的指针,存储变量地址。如int *m就是一个指向整型的指针,可以用于指向一个整型变量。  数组...

    c语言中的指针

          指针就是表示地址的一种变量,所以指针的范围严格来说只能是自然数的,并且不能在两个指针之间进行加、乘、除的运算。

          由于在c语言中每个数据类型都必有存储空间,所以指针可以应用于几乎所有的数据类型中。

    指针可以分为:

          指向变量的指针,存储变量地址。如int *m就是一个指向整型的指针,可以用于指向一个整型变量。

          数组指针,指向整个数组空间的首指针。如int a[10],a本质上就是一个指针,指向该数组的第一个位置。

                                                                                      a[2]表示距离a指向空间向后2个位置所在空间中存放的值。a[2]=*(a+2)。

          字符指针,本质上是数组指针的一种特殊情况,就是存放字符串的数组所对应的数组名。

          指向指针的指针,用于存放指针的一类指针,在本质上与指向变量的指针十分相似。例如char *ss[n]={"java","sss","rrr"}

          函数指针,指向函数的指针就是指向函数的入口地址的指针。

          结构变量指针,结构变量的指针和指向变量的指针类似,主要区别在于结构变量可能有多个类型不同的变量,所以一般空间比较大。

          文件指针,对文件进行操作的指针。

    展开全文
  • 本篇文章主要是讲我们C语言中,我们具有畏惧感的知识:指针,所以平时的开发中也是用得比较少的,甚至基本不用,似乎好像一用就会出毛病,其实并没有这么可怕,指针是C语言的精华,也是C语言的难点,破解C语言...

    本篇文章主要是讲在我们C语言中,我们具有畏惧感的知识:指针,所以在平时的开发中也是用得比较少的,甚至基本不用,似乎好像一用就会出毛病,其实并没有这么可怕,指针是C语言的精华,也是C语言的难点,破解C语言指针,会让你的C语言水平突飞猛进,下面仅用文字进行说明指针有关知识,让我们简单有趣的理解指针。

           我们都知道c语言的最大特点是能够直接访问内存,也就是我们的c指针。指针:其本质就是用来访问内存的工具,它存储的是数据在内存中的地址而不是数据本身的值,那么我们只需要知道我们内存中什么东西,我们就知道指针能够访问什么东西,内存中是一些什么东西?简单点说我们的内存中放的东西就是我们平时编程中用到的变量,这个变量里面的内容就是我们程序员自己规定的含义!

           这么说当我们需要访问、修改变量内容时,就可以不需要通过我们的变量名进行获得了,我们只需要知道这个变量在内存中的位置(可能是相对位置,或者绝对位置)就可以通过一个指针变量访问所有的数据。当然可以反过来思考一下,我们除了用指针,还有什么高级技巧能够获得内存中所有的数据信息!所以说指针是精髓!

           当然有部分同学可能会问,通过指针访问所有内存又有什么用呢?所要说的是:数据与数据最重要的就是关系,那么我们通过指针就能够设计内存的访问算法,从而设计比较统一高效的应用算法!

    常见指针变量的定义
    定  义 含  义
    int *p; p 可以指向 int 类型的数据,也可以指向类似 int arr[n] 的数组。
    int **p; p 为二级指针,指向 int * 类型的数据。
    int *p[n]; p 为指针数组。[ ] 的优先级高于 *,所以应该理解为 int *(p[n]);
    int (*p)[n]; p 为二维数组指针。
    int *p(); p 是一个函数,它的返回值类型为 int *。
    int (*p)(); p 是一个函数指针,指向原型为 int func() 的函数。
    展开全文
  • c语言中指针的用法

    千次阅读 2018-11-12 14:50:18
    1.什么是指针: 指针就是地址。 2.指针变量的定义: 首先要区分指针与指针变量:指针是地址,...指针变量名为 i,而不是 *i,i的值为一个地址,*i的值是存放地址i的内容。 3.指针变量的初始化: (1)int i = 3, *j...

    1.什么是指针:
    指针就是地址。
    2.指针变量的定义:
    首先要区分指针与指针变量:指针是地址,而指针变量是用来存放这个地址的变量。
    指针变量定义的一般形式:基本数据类型 + ’ * ’ + 变量名。
    例如:int *i;
    ‘ * ’表示该变量的类型为指针类型。指针变量名为 i,而不是 *i,i的值为一个地址,*i的值是存放在地址i中的内容。
    3.指针变量的初始化:
    (1)int i = 3, *j; j = &i;
    (2)int i = 3; int *j = &i; //*j表示定义了一个指针变量j, 并将变量i的地址赋给它
    这个程序与第一个程序有什么不同?同样是将变量 i 的地址赋给指针变量 j,第一个程序是“j=&i;”,而第二个程序是“*j=&i;”。原因是,前者是定义指针变量后对它初始化,即先定义后初始化;而后者是定义指针变量时对它进行初始化,即定义时初始化。通过这个对比我们可以更鲜明地看出定义指针变量时的“*j”和程序中用到的“j”含义的不同。
    常见未初始化的错误:
    (1)# include <stdio.h> int main(void) { int i = 3, *j; *j = i; return 0; }
    程序中,j 是 int
    型的指针变量。j 中存放的应该是内存空间的地址,然后“变量 i 赋给 *j”表示将变量i中的值放到该地址所指向的内存空间中。但是现在 j 中并没有存放一个地址,程序中并没有给它初始化,那么它指向的就是 0XCCCCCCCC 这个内存单元。这个内存单元是不允许访问的,即不允许往里面写数据。而把 i 赋给 *j 就是试图往这个内存空间中写数据,程序执行时就会出错。但这种错误在编译的时候并不会报错,只有在执行的时候才会出错,即传说中的“段错误”。所以,一定要确保指针变量在引用之前已经被初始化为指向有效的地址。
    (2)# include <stdio.h> int main(void) { int *i; scanf("%d", i); return 0; }
    该程序试图给指针变量 i 所指向的内存单元赋值。但现在指针变量 i 并没有初始化,所以程序执行时出错。所以同样,在使用 scanf 时必须要先给指针变量 i 初始化。
    (3)# include <stdio.h> int main(void) { int i = 3; int *j = NULL; *j = i; return 0; }
    之前是没有给指针变量j初始化,现在初始化了,但是将它初始化为指向 NULL。NULL 也是一个指针变量。NULL 指向的是内存中地址为 0 的内存空间。以 32 位操作系统为例,内存单元地址的范围为 0x00000000~0xffff ffff。其中 0x00000000 就是 NULL 所指向的内存单元的地址。但是在操作系统中,该内存单元是不可用的。凡是试图往该内存单元中写入数据的操作都会被视为非法操作,从而导致程序错误。同样,这种错误在编译的时候也不会报错,只有在执行的时候才会出错。这种错误也属于“段错误”。
    然而虽然这么写是错误的,但是将一个指针变量初始化为指向 NULL,这在实际编程中是经常使用的。就跟前面讲普通变量在定义时给它初始化为 0 一样,指针变量如果在定义时不知道指向哪里就将其初始化为指向 NULL。只是此时要注意的是,在该指针变量指向有效地址之前不要往该地址中写入数据。也就是说,该指针变量还要二次赋值。
    既然不能往里面写数据,而且还容易犯错,为什么还要这样给它初始化呢?直接同前面定义普通变量时一样,在定义时也不初始化,等到后面知道该给它赋什么值时再给它赋值不行吗?可以!但还是建议大家将它初始化为 NULL,就同前面将普通变量在定义时初始化为 0 一样。这是很好的一种编程习惯。
    最后关于 NULL 再补充一点,NULL 是定义在 stdio.h 头文件中的符号常量,它表示的值是 0。
    4.指针与数组
    (1)指针引用数组

    int main(void)
    {
        int a[] = {1, 2, 3, 4, 5};
        int *p = &a[0];
        int *q = a;
        printf("*p = %d, *q = %d\n", *p, *q);
        return 0;
    }
    

    上述程序中p与 q的值是相同的,这就表明p = &a[0]与q = a是等价的。
    (2)不同指针类型的大小

    int main(void)
    {
        int    *a = NULL;
        float  *b = NULL;
        double *c = NULL;
        char   *d = NULL;
        printf("%d %d %d %d\n", sizeof(a), sizeof(b), sizeof(c), sizeof(d));
        return 0;
    }
    运行结果:4,4,4,4
    

    可见,不管是什么基类型,系统给指针变量分配的内存空间都是 4 字节。在 C 语言中,只要是指针变量,在内存中所占的字节数都是 4。指针变量的“基类型”仅用来指定该指针变量可以指向的变量类型,并没有其他意思。不管基类型是什么类型的指针变量,它仍然是指针变量,所以仍然占 4 字节。

    展开全文
  • c语言中指针与数组名

    千次阅读 2013-05-28 10:15:21
    经过一学期学习,我还算理清楚了,因此作为这学期的的总结,我就只谈谈这一个话题吧,一个话题虽然少,但也能代表这门课中我的收获是很重要的,因为这些知识一直是难点,和关键点---c语言中指针以及数组名.我们看以下3个...
  • c语言中指针悬空

    千次阅读 2014-05-18 23:18:30
    指针悬空我们使用指针的时候很容易被忽视,主要的表现是:指针所指向的内存 释放,指针并没有置为NULL,致使一个不可控制的指针。 #include #include int *pointer; void func() { int n=8; pointer=&n; ...
  • C语言中指针的用法

    千次阅读 2018-09-15 16:38:29
    指针存放地址,那么计算机是如何存放上面定义的a呢? 首先,a占4个字节,因为其是int类型,然后,int类型10的十六进制形式是0x0000000a,那么,它内存又是如何存放的呢, 内存有两种排序方式,大端...
  • C语言——指针

    2021-01-07 11:06:45
    而为了保存一个数据内存的地址,我们就需要指针变量。 众所周知,C语言的基本数据类型有:char、Int、float、double。所占字节分别为1个字节、4个字节、4个字节、8个字节。同样指针 这个概念也泛指 一类数据类型...
  • C语言中指针与java

    千次阅读 2016-01-14 18:15:49
    因为最近想重新学习一遍数据结构,之前上大学的时候都是用c语言实现的,但是其实java源代码例如ArrayList,LinkedLisk等这些类其实都是用数据结构的内容来实现的,所以我也准备用JAVA实现一遍这些数据结构的内容...
  • C语言中指针的几点注意

    千次阅读 2013-11-09 08:06:54
    最近看《C语言深度剖析》,发现里面的东西还是挺有用的,特别是以前脑海中C语言中一些不清晰的部分作者都一一指出了,对与深入学习C和找工作方面都有帮助。 今天要记录一些指针方面的东西,包括数组名和数组名的...
  • 指针函数和函数指针,真是让初学者恶心的东西。...指向的是指针,一个函数的入参和出参,只有的返回值是可以具有指向的,所以表示的是指向某种类型的指针(包括void*类型) 使用举例: #include int*
  • 在C语言中指针是个很重要的概念,指针可以做许多事情。 它还有一些高级应用,这篇文章将对指针数组、数组指针、函数指针、函数指针数组``````函数指针数组、指向函数指针数组的指针这几个比较绕口、也比较容易混淆...
  • C语言中指针作用及使用: 第一步:所有变量都保存内存中 第二步:所有变量都可以保存某些值 第三步:使用指针:1)取值 ;2)移动指针 //=========================================== 对指针变量的 &...
  • C语言中指针的高级用法

    千次阅读 2016-07-14 17:56:25
    问题描述:指针是C语言很有特色的一个部分,但是使用也比较复杂,很容易导致一些莫名的错误,比如有时候函数指针没有赋值,有时指向了未定义的内存,这些时候都可能导致程序异常执行或者崩溃。但指针的灵活性让它...
  • C语言中指针数组和数组指针

    千次阅读 2012-11-11 22:20:35
    一、指针数组和数组指针的内存布局  初学者总是分不出指针数组与数组...32 位系统下永远是占4 个字节,至于它指向的数组占多少字节,不知道。它是“指向数组的指针”的简称。 下面到底哪个是数组指针,哪个是指针
  • 在C语言中指针很重要,数组也很重要,那么如他们两碰在了一起会是怎样的呢?让我们拭目以待
  • C语言中指针动态内存的申请和释放

    千次阅读 2020-08-20 21:10:28
    什么是动态内存的申请和释放? 当程序运行到需要一个动态变量时,需要向系统...在C语言中使用malloc函数申请内存,函数原形:void* malloc(size_t size); 参数size代表申请的内存的字节数,参数size_t代表指针的...
  • C语言中指针

    2019-12-15 18:33:35
    C语言中指针是代表的是内存中的一个地址,内存是用变量存储的地方,指针就是指向该变量地址的一个箭头,C语言中将地址形象化的称为指针,意思就是通过它能找到以他为地址的内存单元。 定义指针变量的一般形式为: ...
  • c语言指针指针运算符(* and &)

    万次阅读 多人点赞 2018-08-10 17:49:37
    c语言的中指针和指针运算符(* and &amp;amp;) c语言的指针 什么是指针?...指针在c语言学习中的地位是什么?...c语言中指针相关的运算符 取地址运算符&amp;amp; 格式:&amp;amp;变量名 含义...
  • c语言 指针

    2020-12-16 09:09:29
    指针是个变量,存放内存单元的地址(编号)。 #include <stdio.h> int main() { int a = 10; // 内存开辟一块空间,存储10 int* p = &a; // 这里我们对变量a,取出它的地址,可以使用&操作符。 ...
  • 今天主要讲解一个我做了这么久开发也会出现的一个问题,还是一个同事提醒了我。...如果有人单看SPI_Data_Out[0]这个有问题的话我觉得你C语言跟我一样差。相对于这两个指针而言这个数组操作没有问题。 但问题出哪呢?
  • c语言-指针

    2020-07-29 14:46:51
    在C语言中,允许用一个变量来存放指针,这种变量称为指针变量。因此,一个指针变量的值就是某个内存单元的地址或称为某个内存单元的指针。 “指针”是指地址,是常量,“指针变量”是指取值为地址的变量。指针变量...
  • C语言中指针的应用

    2013-03-31 20:31:51
    1, 一重指针 1.1 作函数参数用 可以传入,也可以传出 1.2 作函数返回值用 ...可以用来分配内存,然后记录参数指向的位置. #include #include //作为记录指针的更改使用, 比如分配内存 int ialloc (char **p
  • 指针,全称为指针变量,是用来存储内存地址的一种变量。...指针是实实在在的变量,有自己的内存存储空间,它可以指向任何有效的变量。 引用本身没有自己的实际存储空间,相当于别名,操作引用变量,
  • C语言指针

    2017-08-16 23:11:29
     可能很多人刚开始学习C语言,对指针是什么东西不是很理解。从个人经验来看,C语言指针确实是个门槛,但如果能够真正理解指针,那么基本上C语言就入门了 【概念】  计算机科学,指针(Pointer)是编程语言的...
  • 悬空指针C语言中指针可以指向一块内存,如果这块内存稍后被操作系统回收(被释放),但是指针仍然指向这块内存,那么,此时该指针就是“悬空指针”。下面这段C语言代码是一个例子,请看:void *p = malloc(size);...
  • c语言中指针可以指向一个块内存,如果这块内存稍后被操作系统回收(被释放),但是指针任然指向这块内存,那么,此时此刻指针就是“悬空指针”。 void *p = malloc(size); assert(p); free(p); //现在p是一个悬空...
  • C语言函数指针

    2019-02-28 20:14:55
    函数名是一个函数的入口地址(一个常量),函数本质上就是一段代码,被放在内存的“代码段”,函数名就是函数代码段的入口地址。调用函数的时候,通过跳转到该地址,调用函数 二.既然是一个地址,就可以使用...
  • C语言中指针的15个问题  C语言中指针的15个问题 aqiaoboy  1 指针的四要素   1指针变量,表示一个内存地址,通常为逻辑地址,与实际的物理地址还有一个映射关系。  2指针变量的长度,WIN32下为四个字节...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 12,773
精华内容 5,109
关键字:

在c语言中指针是

c语言 订阅