天天看点

char形指针与函数形参

char形指针与函数形参
char形指针与函数形参

这段程序中可以看到第十行函数的形参是两个指针,一个是const 字符指针,一个是person类型的指针。那对于指针作为形参自然的在调用该函数时应该调用参数的地址。但可以看到这个函数中主函数调用WritrStructToFile这个函数时(38行)传进来的是一个“./test.txt”的字符串。这样的做法是错误的吗?可以对传入的参数作一个验证:将WritrStructToFile的函数下打印一下该参数。既然传进来的是一个字符串,就以字符串的形式打印出来看有否问题。

加入printf后的程序如下:

char形指针与函数形参

执行程序后发现编译以及运行没有问题,且还能打印出来传进函数的字符串

char形指针与函数形参

那接下来将printf的打印方式更换为地址打印。

运行程序后如图:

char形指针与函数形参

就发现打印出来了地址,奇怪的事情发生了,这个函数中的形参path居然能够同时附带字符串以及地址的属性。

那看到这里大概能和数组的性质联想起来,字符串应该也是和数组具有相同的特性,即首个字符代表的是指向这个字符串的地址,当在主函数中调用WritrStructToFile函数传进去的也确实是一个地址,当地址传到WritrStructToFile函数中去后,对path进行的一个打印的工作,就随之存在着这两种情况了。

继续阅读