在线工具 在线编程 在线白板 在线工具 在线编程 在线白板

关于char*p[];char**p;char(*p)[];的区别以及在函数调用时的区别,

在函数调用时;char*p[];char**p;char(*p)[];作为形参,那么对应的实参类型分别是什么?
最新回答
一枝沈荼

2024-05-22 03:58:42

char *p[] 是数组,元素类型为字符指针。作变量定义时需要有元素数量,或者有初始化
表达式
以确定元素数量。
char **p 是指针,其指向的一个字符指针。通常用于遍历像上面这样的数组。
char (*p)[] 是指针,其指向的是名义上的数组(因为没有具体数组元素数目)。作变量定义时需要明确其所指的数组的元素数目,这对像之后的 p++ 这类操作的结果有决定性影响。通常用于遍历
二维数组


以上这三个,作函数参数声明时,
方括号
内可为空。
若为空,则以上三个语义完全相同,C
编译器
无法对它们进行区别,对应的实参类型都必须是一个指针变量的地址。C99规定,作参数声明时,“指向T的指针”和“T的数组”没有区别。
若方括号内指定了具体元素数目,则效果等于变量定义时的效果。再加一个char p[][8],做函数参数声明时 等价于 char (*p)[8]。
︶ㄣ彯逸尐苏

2024-05-22 05:38:16

第一个指针数组
第二个指向(指向char的指针)的指针
第三个指向char数组的指针
这三个都不一样 根据函数的参数和返回值类型选择