c 指针和c指针,C语言中指针函数和函数指针有什么区别

1 , C语言中指针函数和函数指针有什么区别指针函数:本质是一个函数,返回值是一个指针函数指针:本质是一个指针变量,该指针变量指向一个函数 。指针本质上其实是一个地址值 , 就像你的邮编一样 。你根据这个指针所代表的地址去送信,敲敲门,开门的是一个函数,那么就称这个指针为函数指针 。程序在编译时 , 每一个函数都有一个入口地址 , 这个入口地址就是函数指针所指向的地址
2,c语言相关指针函数和指向函数的指针指向函数的指针 就是指函数可以通过函数的指针间接地调用 指针函数 是指函数的返回类型是指针而已 当需要返回地址时常用 比如要返回数组等等指针函数就是那个,说一下函数指针(只想函数的指针)举个例子intmax(int a,int b);int mix(int a,int b);这两个函数int (*p)(int ,int)如果程序中p = max;那么 比如int a= 4, b = 5;max(a,b) 与p(a,b)是等价的如果p = min;那么min(a,b)与p(a,b)是等价的
3,C语言指针的定义指针就是地址 。你说的是指针变量 。整形变量 , 浮点变量,字符变量,指针变量 。通过起名的规律就知道指针变量是储存地址的 。指针变量和其他变量的用法一样,作用域一样 。在一个子涵数中定义指针变量 , 是局部变量 , 其他函数是不能用的 。不要把指针变量想的太复杂,地址(指针)也是数据,和其他字符数据,整形数据一样,没什么差异 。当然,全局变量的指针变量当然可以多函数使用 。指针的定义:地址 。指针变量的定义:存储指针的变量 。这个是c语言的复杂类型声明: char (*ptr)[5] ptr是一个指针,其指向一个数组,此数组有5个元素,每一个元素都是char类型 。int *fip() fip是一个函数 , 此函数的返回值是指向int类型的指针 。int (*pti)() pti是一个指针 , 其指向一个函数 , 此函数没有参数,并且此函数的返回值是int类型 。【c 指针和c指针,C语言中指针函数和函数指针有什么区别】
4 , C和C中的指针是不是一样的C和C++基本上是一样的 , 出不来说,只是C++多了类的概念,所以增加了很多关于类的的操作 。另外C++在函数参数传递时 , 增加了引用的概念,其他方面,对于初学者来说,可以认为是一样的 。其中一些细节的区别,当你学到那的时候 , 自然会明白了 。基本一样,c++环境兼容c语言c++简化c的地址指针传递,引入了引用都是存放内存的地址基本一样的.c++利用基类的指针和虚函数能实现多态一样的 , 都是地址;如变量地址、数组首地址、函数地址;一样的基本上是一样的,但是在内存处理上很多问题涉及到编译器,而指针实际上就是内存地址 。至于标准,有心情有兴趣的话可以参考一下这两个文档:ISO/IEC 9899:1999(C语言标准)ISO/IEC 14882(C++语言标准)5,指针在C和C的微妙区别C语言中并没有这种约定 , C语言的指针可以指向任何可以指向的位置,可以进行算术运算以及比较 。C++ 中迭代器通过类封装了指针,为了检测迭代器(也包括逆迭代器)是否到达序列末尾 , 约定使用该序列(相对迭代器)最后一个有效元素之后的位置标记结束,因为很多标准库的算法都需要一个operator<或less函数子,而不是operator<=运算符,这也是最初形成的习惯 。C++与C语言本身就是两种不同的语言,而迭代器是C++所特有的概念 , 跟C语言的约定没有太多关系 。没看懂你说的东西,C++是C语言的超集,加入了面向对象的东西,还有STL 。在STL中提供了很多有用的数据结构和常用的算法,比如vector,map,queue,快速排序等 。这些东西的加入大大加快了开发的速度,相对于java而言,c++中提供的东西还算很少的(java甚至还提供了算圆面积的函数) 。对于为什么要打破C语言的习惯,不使用指针,可能是因为使用指针可能存在很多问题,很容易导致程序崩溃,或造成遗留bug(在java中没有指针) 。;iostream>using namespace std;void swap(int a,int b)int temp;temp=a;a=b;b=temp;} main()int a=3,b=5;cout<< "before swap:a="<<a<<",b="<<b<<endl;swap(a,b);cout<<"afterswap:a="<<a<<",b="<<b<<endl;}这个例子是传值调用 ,  意思就是 形参 的 改变不会影响 实参的值 。你运行一下可知 主函数调用了swap函数后 a , b的值并没有发生交换 。原因是,调用swap函数时 编译器为 swap(int a,int b) 中的形参 a ,b单独分配内存空间,并接受主函数传递来的值,这块内存空间和 main()函数中的 a ,b 不是同一内存空间 。所以在swap(int a,int b) 中 a,b发生了交换 , 但main函数中a  ,  b没发生交换 。即主调函数与被调函数的操作对象各不相同,参数仅在调用时由实参向形参传递,而不可由形参向实参传递 。要使a,b发生交换 需要使用传址调用 。程序改为如下:#include<iostream>using namespace std;void swap(int & a,int &b)int temp;temp=a;a=b;b=temp;cout<<"in swap:a="<<a<<",b="<<b<<endl;}main()int a=3,b=5;cout<< "before swap:a="<<a<<",b="<<b<<endl;swap(a,b);cout<<"afterswap:a="<<a<<",b="<<b<<endl;}引用可以看作是一个变量的别名 , 使用 引用 时,对于void swap(int a,int b)编译器并没有给形参a,b分配新的内存空间,只是使 形参a , b指向了main函数中实参a,b的内存空间,他们共享同一内空间,即把地址给了形参 。所以在void swap(int a,int b)函数中对这块内存的改变也就改变了实参的值 。除了使用引用,也可以使用指针 。指针方式和引用方式都属于传址调用 。另外,虚机团上产品团购,超级便宜别钻牛角尖没看懂你说的东西,C++是C语言的超集,加入了面向对象的东西,还有STL 。在STL中提供了很多有用的数据结构和常用的算法 , 比如vector,map,queue , 快速排序等 。

    推荐阅读