数组变量好比指针……
当你创建了一个数组,数组变量就可以当作指针使用,它指向数组在存储器中的起始地址。当C语言在函数中看到这样一行代码时:
计算机会为字符串的每一个字符以及结束字符\0
在栈上分配空间,并把首字符的地址和quote
变量关联起来,代码中只要出现这个quote
变量,计算机就会把它替换成字符串首字符的地址。其实,数组变量就好比一个指针:
……所以传给函数的是指针
这就是为什么fortune_cookie()
代码发生了奇怪的事情。看起来把字符串传给了fortune_cookie()
函数,但实际上只传了一个指向字符串的指针:
这就是为什么sizeof
运算符会返回奇怪结果,它只是返回了字符串指针的大小。指针在32位操作系统中占4字节,在64位操作系统中占8字节。