开发者社区> 问答> 正文

关于在C 语言中往函数里传递指针变量写法的困惑

下面两种写法

void fun1(int px,int py)

void fun2(int px,int py)
对于第一种我能很直观的感受到是要传递一个指针进去,但是第二种写法就感觉有点绕
假如px是一个指针,*px就应该是px对应的值了,为什么还要还是表示要传进来的是一个指针呢?

就是感觉到不习惯.

展开
收起
a123456678 2016-06-08 14:20:29 2044 0
1 条回答
写回答
取消 提交回答
  • 这个的确是个奇怪的东西,通常的理解是这样的,对于int p表示申请了一个变量p,并且规定p的类型是int,既然*p的类型是int,从而反推出p的类型是int指针;
    这样的理解有点违反直觉,但是很有助于理解C的指针,比如申请一个函数指针void (*f)(int)表示申请了一个名为f的,指向一个无返回值,带一个int参数的函数的指针;
    另外例如数组指针,譬如int (*a)5是指向一个三维数组的某两维的指针,必须使用如上的方式理解;
    另外还有就是int a,b表示a和b都是int类型的,即申请了两个指针,而在int a,b中表示a和b是int类型,所以b是int而非指针;
    那么在C语言中,变量的定义是用类型名 变量名来定义的,在int p的定义中,既然变量名是p,那么其类型就自然是int
    不过编译器并不在意空格什么的东西,对于编译器来说,int p和int p完全是一码事,所以采用哪种写法其实对于程序执行是无所谓的,但是你必须要知道这样的写法是怎么来的,而且如果你能够理解的话,就会习惯写成int *p的样子了

    2019-07-17 19:31:52
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载