关于char*p[];char**p;char(*p)[];的区别以及在函数调用时的区别,
在函数调用时;char*p[];char**p;char(*p)[];作为形参,那么对应的实参类型分别是什么?...
在函数调用时;char*p[];char**p;char(*p)[];作为形参,那么对应的实参类型分别是什么?
展开
展开全部
char *p[] 是数组,元素类型为字符指针。作变量定义时需要有元素数量,或者有初始化表达式以确定元素数量。
char **p 是指针,其指向的一个字符指针。通常用于遍历像上面这样的数组。
char (*p)[] 是指针,其指向的是名义上的数组(因为没有具体数组元素数目)。作变量定义时需要明确其所指的数组的元素数目,这对像之后的 p++ 这类操作的结果有决定性影响。通常用于遍历二维数组。
以上这三个,作函数参数声明时,方括号内可为空。
若为空,则以上三个语义完全相同,C编译器无法对它们进行区别,对应的实参类型都必须是一个指针变量的地址。C99规定,作参数声明时,“指向T的指针”和“T的数组”没有区别。
若方括号内指定了具体元素数目,则效果等于变量定义时的效果。再加一个char p[][8],做函数参数声明时 等价于 char (*p)[8]。
char **p 是指针,其指向的一个字符指针。通常用于遍历像上面这样的数组。
char (*p)[] 是指针,其指向的是名义上的数组(因为没有具体数组元素数目)。作变量定义时需要明确其所指的数组的元素数目,这对像之后的 p++ 这类操作的结果有决定性影响。通常用于遍历二维数组。
以上这三个,作函数参数声明时,方括号内可为空。
若为空,则以上三个语义完全相同,C编译器无法对它们进行区别,对应的实参类型都必须是一个指针变量的地址。C99规定,作参数声明时,“指向T的指针”和“T的数组”没有区别。
若方括号内指定了具体元素数目,则效果等于变量定义时的效果。再加一个char p[][8],做函数参数声明时 等价于 char (*p)[8]。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询