下面两种写法
void fun1(int px,int py)
和
void fun2(int px,int py)
对于第一种我能很直观的感受到是要传递一个指针进去,但是第二种写法就感觉有点绕
假如px是一个指针,*px就应该是px对应的值了,为什么还要还是表示要传进来的是一个指针呢?
就是感觉到不习惯.
这个的确是个奇怪的东西,通常的理解是这样的,对于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的样子了
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。