其实assigned() 函数的参数要求是一个指针变量,用来判断这个指针是不是为 nil,如果是则返回 False,如果不是则返回 True 总结: p和 @p 都代表函数指针,只有@@p 才代表函数指针本身的地址,为了不产生歧义,所以有的时候需要使用 @p,有时候使用 p(比如 assigned(p)) 一般在赋值的时候既可以使用 p 又可以使用 ...
如果不判断的话,假如字符指针为空的话,操作它会引起非法内存操作,引致错误。最好就在开头的地方判断,或者用断言assert宏, 例: assert(p != NULL) 如果断言为假的话 程序就中止,为真则继续运行。
基本上 p 和@p 都代表了函数指针,只有@@p 才代表了函数指针 本身的地址,为了不产生岐义,所以有时候使用@p,有时候使用 p。 一般在赋值的时候既可以使用 p 又可以使用@p,而在比较的时候必须 使用@p,这在编译的时候就已经严格控制了,所以出现编译错误的时 候就可以考虑这方面的问题。
基本上p和@p都代表了函数指针,只有@@p才代表了函数指针本身的地址,为了不产生岐义,所以有时候使用@p,有时候使用p。一般在赋值的时候既可以使用p又可以使用@p,而在比较的时候必须使用@p,这在编译的时候就已经严格控制了,所以出现编译错误的时候就可以考虑这方面的问题。