关于object-C的简单问题

问题描述:

关于object-C的简单问题
const char *word[4]={"aaa","sssdd","sssss","sss111"}这个是char数组吗
还有一个 char word[100];
while(fgets(word,100,wordFile)){
word[strlen(word)-1]='\0'}
这两个有什么区别吗,还有关于fgets()希望能顺便讲一下,里面3个参数的含义
1个回答 分类:综合 2014-10-15

问题解答:

我来补答
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 所有变量都是以指针的形式定义,所以,你要对指针概念理解非常透彻才行哦
 
 
展开全文阅读
剩余:2000