c语言对指针的理解,C语言指针概念

1 , C语言指针概念指针的实质是地址一种变量类型,存放地址,占四个字节.四个字节可以存放的范围就是0x00000000~0xFFFFFFFF也就是2^32 B = 4GB虚拟地址空间.【c语言对指针的理解,C语言指针概念】
2,怎么理解C语言里的指针指针类似于是电脑里面的“桌面快捷方式”,指向了实际的文件内容快捷方式(指针)指向了文件(变量)的地址 。当快捷方式(指针)里面的内容(值)变化的时候,文件(变量)的内容(值)也跟着变化 。当单独删除快捷方式(指针)的时候,文件(变量)仍然存在,并没有因此而删除
3,c语言指针的指针的理解指针,即指向数据的储存地址,方便计算机寻找数据,可以指向变量,函数,数组 , 甚至指向指针(如int **point) , 组合起来,好多方式 。定义并指向一个变量后,没* , point代表变量地址,有*,代表地址里的值即变量值,指向指针的指针**point分开理解,首先指向*point,而*point代表变量的值指针和你刚接触计算机语言一样,刚开始觉得特抽象,学进去了就觉得不就这么回事吗 , 指针是c/c++的精华,没学好指针就可以说你没学好c/c++,初学感觉没什么用 , 数组可以胜任,当深入学习后你会发现不用指针的程序效率很低 。
4,c语言中指针变量怎么理解怎么用指针变量是一个变量,它保存的是另一个变量的内存地址 。你如果知道了这个指针变量保存的值,就可以知道它所指向变量的内存地址,于是就可以间接访问到那一个变量 。定义:指针变量类型 *指针变量名1, *指针变量名2, ... ;例如:int main(void)int *p;/*定义*/int a;p = &a;/*把a的地址赋值到p中*/*p = 1;/*间接访问a*/return 0;}把指针作为函数的参数传递,可以使函数可以访问函数外部的变量 , 例如:void swap(int *a, int *b)int c;c = *a; *a = *b, *b = c;}指针也可以用于传递数组,数组名本身就是一个指针:void func(int a[], int n)指针还可以指向指针,指向结构体(struct),指向数组int **p;/*指向int指针*/struct XXX *p;int (*p)[100]; /*指向一个int[100]数组,括号不可少*/我是这样理解的:在c语言中,你需要定义变量,那么你所定义的这个变量本身你要理解两层含义:(1)变量中的值是多少?有了值我们可以直接拿变量参与运算 , eg.int a=5;在计算的时候a就表示5;(2)变量存储在内存中的什么位置?变量的存储位置,就是变量的地址,那么这个地址可以用指针来存储,eg.int a=5, *p=&a; 在这里p就是指针变量,存储了变量a的地址,这个时候你要是用a变量的值,即可以直接用a,也可以用*p,*p是通过p这个指针(也就是a的地址) , 间接的找到a , 在程序中*p与a是等价的 。不知道你会不会汇编指针其实就是寄存器间接寻址 我觉的这样解释最直接容易理解,当然是要你会汇编的话,不懂的话,指针其实是个变量只不过这个变量的值是地址指针变量是一个变量,它的值是另外一个变量在内存中的地址,如:int a = 5;用5初始化变量aint* ptr = &a;用变量a的地址初始化指针ptr5,C语言中对指针的理解与举例子指针就是指向了一个地址的变量数据存储在电脑的内存中,那么它肯定有自己的内存地址比如 , int a=3 , 给a分配了一个地址 , 但是我们不知道是什么,我们设为20吧,在20的地址中存的就是3,当然这里存的是3的二进制,因为电脑存储数据就是二进制的int *p;p=&a;定义一个指向a的指针,就是定义了一个指针类型的变量,并且也分配一个地址,假设是80,并且这个地址中存放的是,a的地址,也就是,20,当然这里20是以是二进制存的 那么*p=3了就是他指向的地址的值指针就是指向了一个地址的变量数据存储在电脑的内存中,那么它肯定有自己的内存地址比如,int a=3,给a分配了一个地址 , 但是我们不知道是什么,我们设为20吧 , 在20的地址中存的就是3 , 当然这里存的是3的二进制 , 因为电脑存储数据就是二进制的int *p;p=&a;定义一个指向a的指针,就是定义了一个指针类型的变量,并且也分配一个地址,假设是80,并且这个地址中存放的是,a的地址,也就是,20,当然这里20是以是二进制存的 那么*p=3了就是他指向的地址的值首先你要知道指针是一个变量,所以它具有普通变量的性质 。比如你int a 。a是一个变量 。当你创建的时候,系统就会分配给他一个地址空间,它的长度是四字节的 。你可以给这个变量a赋任何小于4字节的大小 。指针也一样 。它也有地址 。它也有值 。不同的是普通变量a,它存的是1,2,3这些数字 。而指针存放的是别人的地址 。事实上也是一个值 。简单点说 。指针就是一个快递员 。它有自己的家 。但他平时要工作,所以很少会回家(指针的地址一般很少用到) 。你会去在意快递员的家在哪吗?一般不会 。你在意的是他的工作 。快递员的工作是什么?快递员的工作就是取快递和送快递 。所以他手上有很多的地址记录 。这样他就可以根据地址去地址所在的地方传快递或拿快递 。(在C里面就是到变量的地址里面改变变量的值,或者取变量的值 。)具体的应用的话 , 普通指针的应用是很简单的 。跟普通变量一样 。只是前面多了个*号 。如 char *p;p=&a;(取a的地址,这样才可以去拿a的数据,或者传数据给a)有两个概念可能容易搞混的,就是指针函数和函数指针 。函数指针,它是一个指针,所以具有普通指针的特点 。也就是它也是取别人的地址,然后去别人的地址拿东西 。跟普通指针不同的是 , 他是指向一个函数的 。指针函数,它是一个函数,它具有普通函数的特点,普通函数做什么的 , 函数是用来解决问题的一个方法 。函数是有返回值的,void类型就是返回无嘛 。指针函数不同的就是它的返回值是一个指针 。所以你怎去理解指针 。你要把它跟普通的你已经理解的概念联系起来 。比如你定义一个指针,char *p你就可以把它跟char a联系起来 。你要用指针函数,你就想想普通的函数是怎么操作的 。不要把它想得太难 。其实也就是那么回事 。C中的指针,来来去去也就是那几个(我说的都是重点,当然不可能只有这些)基本类型指针结构体指针指针和数组的关系指针数组多级指针指向常量的指针常量指针void指针等等 。。。。。这些不是一两句话就能掌握的 。。LZ还是去看看书或者看看视频吧 。。或者哪里不懂的请追问 。。3Q!首先你要知道指针是一个变量,所以它具有普通变量的性质 。比如你int a 。a是一个变量 。当你创建的时候,系统就会分配给他一个地址空间,它的长度是四字节的 。你可以给这个变量a赋任何小于4字节的大小 。指针也一样 。它也有地址 。它也有值 。不同的是普通变量a,它存的是1,2,3这些数字 。而指针存放的是别人的地址 。事实上也是一个值 。简单点说 。指针就是一个快递员 。它有自己的家 。但他平时要工作,所以很少会回家(指针的地址一般很少用到) 。你会去在意快递员的家在哪吗?一般不会 。你在意的是他的工作 。快递员的工作是什么?快递员的工作就是取快递和送快递 。所以他手上有很多的地址记录 。这样他就可以根据地址去地址所在的地方传快递或拿快递 。(在C里面就是到变量的地址里面改变变量的值,或者取变量的值 。)具体的应用的话,普通指针的应用是很简单的 。跟普通变量一样 。只是前面多了个*号 。如 char *p;p=&a;(取a的地址,这样才可以去拿a的数据 , 或者传数据给a)有两个概念可能容易搞混的,就是指针函数和函数指针 。函数指针,它是一个指针,所以具有普通指针的特点 。也就是它也是取别人的地址,然后去别人的地址拿东西 。跟普通指针不同的是,他是指向一个函数的 。指针函数 , 它是一个函数,它具有普通函数的特点,普通函数做什么的,函数是用来解决问题的一个方法 。函数是有返回值的,void类型就是返回无嘛 。指针函数不同的就是它的返回值是一个指针 。所以你怎去理解指针 。你要把它跟普通的你已经理解的概念联系起来 。比如你定义一个指针 , char *p你就可以把它跟char a联系起来 。你要用指针函数,你就想想普通的函数是怎么操作的 。不要把它想得太难 。其实也就是那么回事 。

    推荐阅读