型参是指针,能这么调用么?

时间:2022-03-14 10:39:15
  比如一个函数这样定义:int *GetPra(char *str,int *n,char *tmp)
  然后在调用时这样:
  char str[10];int n;char tmp[20];
  GetPra(str,n,tmp);
  我看到别人的代码是这样写的,编译没问题,所以有点疑惑,不是函数定义了参数要求是指针型么,求高人指点。。

5 个解决方案

#1


GetPra(str,&n,tmp);

同时保证str和tmp的空间要够

#2


c 语言,几乎 数组,指针不分家

int a[2], *p;

p=a; // 这样ok, 可见指针可以被赋值数组名。 但反过来,不行

#3


就是说地址传递给GetPra 这个N估计是这两个数组的某个数组的大小, 因为作为指针传递后的数组,它的大小会被丢弃,所以容易溢出错误或者越界访问未知目标 返回一个 INT *

#4


呵呵,数组名可以看作是const指针。本身不可以修改,但是把指的内容可以修改。

#5


  就算数组作为函数参数是当作指针来处理的,但整型数据总不能当整型指针吧。。。为还是能够通过编译呢

#1


GetPra(str,&n,tmp);

同时保证str和tmp的空间要够

#2


c 语言,几乎 数组,指针不分家

int a[2], *p;

p=a; // 这样ok, 可见指针可以被赋值数组名。 但反过来,不行

#3


就是说地址传递给GetPra 这个N估计是这两个数组的某个数组的大小, 因为作为指针传递后的数组,它的大小会被丢弃,所以容易溢出错误或者越界访问未知目标 返回一个 INT *

#4


呵呵,数组名可以看作是const指针。本身不可以修改,但是把指的内容可以修改。

#5


  就算数组作为函数参数是当作指针来处理的,但整型数据总不能当整型指针吧。。。为还是能够通过编译呢