关于C语言指针

      指针有函数指针比如:int *p(int,int),数组指针比如:int (*p)[n],和普通指针int *p。除此之外还有一个指针数组int *p[n]。

函数指针的用法:函数指针有两个用途:调用函数和做函数的参数。

int add (int a, int b) {

    return a + b;

}

int sub (int a, int b) {

    return a - b;

}

int main()

{

    int (*fun)(int, int);

    fun = add;

    int result = fun(2, 1);

    cout << result << endl;

    fun  = sub;

    result = fun(2, 1);

    cout << result << endl;

    return 0;

//执行结果

3 1

数组指针与指针数组的区别:

举个例子说明,如下:

int * a[5] 和 int (*a)[5]

可以看出的是,他们只相差一个括号,由于存在优先级的关系(( ) > [ ] > *),如果不加括号,a会先与[ ]结合,加了括号,a则先与*结合。加括号为的是改变运算的结合顺序。

int * a[5]没有括号,a先与[ ]结合,先是个数组;

int (*a)[5]加了括号,a先和*结合,先是个指针。

故:

int * a[5]是指针数组,本质上是一个数组,数组里存放的元素是指针,指针的类型是int *型,指向一个整型数。

int (*a)[5]是数组指针,本质上是一个指针,指针所指对象是一个数组,数组的类型是int [5]型。

        其实,数组指针与指针数组两个用的比较多的还是数组指针,并且多用于处理二维数组。

以上是我对C语言指针的认识。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容