关于object-C的简单问题
发布网友
发布时间:2022-04-24 00:55
我来回答
共1个回答
热心网友
时间:2022-04-24 02:24
const char *word[4]={"aaa","sssdd","sssss","sss111"}这个是char数组吗?
是一个字符类型的指针数组,高级语言里又叫String 数组, word 是这个指针数组的首地址变量,也叫做指针的指针。
其实可以这样理解:
"aaa" 字符串在内存里被分配3字节的空间块, 那么 word[0] 里记录的是这个空间块的地址 ,
所以 word[0] 是一个地址变量,也就是常讲的指针。但前面已经写了一个 const 所以,这不能再改变,不能再获取其他字符串内存块的地址,永远只能属于"aaa",也就不是变量,而是常量。
同理 word[1] -> "sssdd" .....
fgets( 从字符串数组读取一行字符 , 缓存大小 , 指向一个打开的文件对象 )
意思 是把文件的一行读入 word[100] 内 当然,可能文件中,一行远超过100个字节
但第二个参数已经限定,如果超出100字节就不读了,保证word[100]能容纳不内存溢出。
如果fgets( , , ) 函数在读取过程中,发生以下三种情况时,读取停止:
1. 发现换行符
2. 发现文件终结符EOF
3. 发生错误
而这个函数在什么情况下会返回NULL呢,就是上述的第2和第3种情况发生时,会返回NULL,此时循环退出。
当然,如果你是学习Object-C iPhone编程的,你可以使用乔帮主的NS系列变量
NSString * word[4]={ "aaa","sssdd","sssss","sss111" }
因为Object-C 所有变量都是以指针的形式定义,所以,你要对指针概念理解非常透彻才行哦