c 语言指针,怎么理解C语言里的指针

1,怎么理解C语言里的指针指针类似于是电脑里面的“桌面快捷方式”,指向了实际的文件内容快捷方式(指针)指向了文件(变量)的地址 。当快捷方式(指针)里面的内容(值)变化的时候,文件(变量)的内容(值)也跟着变化 。当单独删除快捷方式(指针)的时候,文件(变量)仍然存在,并没有因此而删除
2,C语言中指针是什么你这个问题你百度一下就知道了,你在理解的过程中还有什么不懂你在提出来还差不多1.指针就是1个变量,他也是一个存放内容的内存空间 。2.指针存放的内容是另一个内存空间的起始地址 。不同于一般变量存放的就是变量值 。3.取值操作符*对于指针的作用是取得指针变量存放的内存地址里面的值 , 不加*取出的是指针变量存放的值(就是一个内存地址)上面3步,step by step 你就理解了.【c 语言指针,怎么理解C语言里的指针】
3 , c语言 指针修改如下:#include<stdio.h> void main()void average(float *p,int n);/*注意这里*/void search(float (*p)[3]); /*注意这里*/float score[3][3]=average(&score[0][0],9);/*注意这里*/search(score); } void average(float *p,int n)/*注意这里*/int sum,i,k;for(i=0;i<n/3;i++) /*注意这里*/sum=0;for(k=0;k<3;k++)/*注意这里*/sum=sum+*(p+i*3+k); /*注意这里*/aver=sum/3;printf("average= %5.2f\n",aver);} } void search(float p[][3])/*注意这里*/int i,j,flag;float aver,sum=0;for(i=0;i<3;i++)flag=0;for(j=0;j<3;j++)if(*(*(p+i)+j)<60)flag+=1;if(flag>1)printf("NO.%d fails,his scores are:\n",i+1);for(j=0;j<3;j++)printf(" %5.1f",*(*(p+i)+j));for(j=0;j<3;j++)sum=sum+*(*(p+i)+j);aver=sum/3;printf(" %5.2f\n",aver);}} }
4,c语言 指针#include <stdio.h>int main() int a[10]= for(p=a;p<a+10;p++)//p是指针,批向数组的第一个元素,并将指针移到下一个元素 printf("%d,",*p++);//输出指针所指向的元素的内存,并将指针移到下一个元素 //上面是两次指向一下人元素,也就是说一次循环+2,++在后边是先使用再+1 printf("\n"); for(p=a;p<a+10;p++) printf("%d,",*++p);//++在前边,是先自加再使用 printf("\n"); return 0 ;}for(p=a;p<a+10;p++) //执行之后p的地址加1printf("%d,",*p++); //这句是每次执行之后的p所指向的地址加1,第一次是a[0]的值这样每次循环p的地址加2,所以执行的结果是:1,3,5,7,9for(p=a;p<a+10;p++) //执行之后p的地址加1printf("%d,",*++p); //这句是每次执行之前的p所指向的地址加1 , 第一次是a[1]的值这样每次循环p的地址加2,所以执行的结果是:2,4,6 , 8,0这里主要是*p++和*++p的问题,第一个for循环中p=a=a[0]=1<1+10运行printf语句 输出*p的值然后p值加1(printf语句中的p++) , 也就是指针指向后一个地址即a[1]=2,然后执行p值加1(for括号里的p++) , 也就是指针指向后一个地址即a[2]=3,以此类推输出1 , 3,5,7,9第二个for循环中p=a=a[0]=1<1+10运行printf语句 p值加1也就是*p指针指向后一个地址即a[1]=2然后输出*p的值(printf语句中的++p),,然后执行p值加1(for括号里的p++),也就是指针指向后一个地址即a[2]=3,以此类推输出2,4 , 6,8,0我也是初学者 , 这是我自己的理解,有些术语还不会说了,希望能这样解释清楚了吧 。第一个循环体中,先输出第1个元素,然后再指针后移,在循环计数的地方再后移一次,这样下次再输出的时候就是第三个元素了 , 所以输出下素为奇数的元素;第二个循环体中,先指针后移,然后再输出,这样就输出了第二个元素,之后再在循环计数的地方再后移一次,这样下次再输出的时候就是第四个元素了,所以输出下素为偶数的元素;运行结果如下图所示:5,C语言中的指针是什么详细说明指针是C语言中广泛使用的一种数据类型 。运用指针编程是C语言最主要的风格之一 。利用指针变量可以表示各种数据结构;能很方便地使用数组和字符串;并能象汇编语言一样处理内存地址 , 从而编出精练而高效的程序 。指针极大地丰富了C语言的功能 。学习指针是学习C语言中最重要的一环,能否正确理解和使用指针是我们是否掌握C语言的一个标志 。同时,指针也是C语言中最为困难的一部分,在学习中除了要正确理解基本概念,还必须要多编程,上机调试 。只要作到这些,指针也是不难掌握的 。地址指针的基本概念在计算机中,所有的数据都是存放在存储器中的 。一般把存储器中的一个字节称为一个内存单元 , 不同的数据类型所占用的内存单元数不等,如整型量占2个单元,字符量占1个单元等 , 在前面已有详细的介绍 。为了正确地访问这些内存单元 , 必须为每个内存单元编上号 。根据一个内存单元的编号即可准确地找到该内存单元 。内存单元的编号也叫做地址 。既然根据内存单元的编号或地址就可以找到所需的内存单元 , 所以通常也把这个地址称为指针 。内存单元的指针和内存单元的内容是两个不同的概念 。可以用一个通俗的例子来说明它们之间的关系 。我们到银行去存取款时, 银行工作人员将根据我们的帐号去找我们的存款单,找到之后在存单上写入存款、取款的金额 。在这里 , 帐号就是存单的指针,存款数是存单的内容 。对于一个内存单元来说,单元的地址即为指针,其中存放的数据才是该单元的内容 。在C语言中,允许用一个变量来存放指针 , 这种变量称为指针变量 。因此,一个指针变量的值就是某个内存单元的地址或称为某内存单元的指针 。图中,设有字符变量C,其内容为“K”(ASCII码为十进制数 75),C占用了011A号单元(地址用十六进数表示) 。设有指针变量P,内容为011A,这种情况我们称为P指向变量C,或说P是指向变量C的指针 。严格地说,一个指针是一个地址,是一个常量 。而一个指针变量却可以被赋予不同的指针值,是变量 。但常把指针变量简称为指针 。为了避免混淆,我们中约定:“指针”是指地址,是常量,“指针变量”是指取值为地址的变量 。定义指针的目的是为了通过指针去访问内存单元 。既然指针变量的值是一个地址,那么这个地址不仅可以是变量的地址 , 也可以是其它数据结构的地址 。在一个指针变量中存放一个数组或一个函数的首地址有何意义呢? 因为数组或函数都是连续存放的 。通过访问指针变量取得了数组或函数的首地址,也就找到了该数组或函数 。这样一来,凡是出现数组,函数的地方都可以用一个指针变量来表示,只要该指针变量中赋予数组或函数的首地址即可 。这样做,将会使程序的概念十分清楚,程序本身也精练,高效 。在C语言中,一种数据类型或数据结构往往都占有一组连续的内存单元 。用“地址”这个概念并不能很好地描述一种数据类型或数据结构,而“指针”虽然实际上也是一个地址,但它却是一个数据结构的首地址 , 它是“指向”一个数据结构的 , 因而概念更为清楚,表示更为明确 。这也是引入“指针”概念的一个重要原因 。变量的指针和指向变量的指针变量变量的指针就是变量的地址 。存放变量地址的变量是指针变量 。即在C语言中,允许用一个变量来存放指针,这种变量称为指针变量 。因此,一个指针变量的值就是某个变量的地址或称为某变量的指针 。为了表示指针变量和它所指向的变量之间的关系,在程序中用“*”符号表示“指向”,例如 , i_pointer代表指针变量,而*i_pointer是i_pointer所指向的变量 。因此,下面两个语句作用相同:i=3;*i_pointer=3;第二个语句的含义是将3赋给指针变量i_pointer所指向的变量 。也是一种变量,不过是用过存储地址的 。比如int*它就是用来存储int型变量的地址 。char*则是用来存储char型变量的地址 。