黑马程序员技术交流社区

标题: OC编程中遇到的关于汉字输出的问题,请大家解答 [打印本页]

作者: liu01230    时间: 2015-5-11 21:51
标题: OC编程中遇到的关于汉字输出的问题,请大家解答
本帖最后由 liu01230 于 2015-5-11 23:05 编辑
  1. #import <Foundation/Foundation.h>
  2. @interface Students : NSObject
  3. {
  4.     @public
  5.     char *name;
  6.     double score;
  7.     int age;
  8. }
  9. - (void)eat;
  10. - (void)study;
  11. @end

  12. @implementation Students
  13. - (void)eat
  14. {
  15.     NSLog(@"名字为%s的人在吃饭", name);
  16. }
  17. - (void)study
  18. {
  19.     NSLog(@"名字为%s的人的学习成绩为%.1f。", name, score);
  20. }
  21. @end

  22. int main()
  23. {
  24.     Students *s = [Students new];
  25.     s->name = "张三";
  26.     s->age = 18;
  27.     s->score = 89.5;
  28.    
  29.     [s eat];
  30.     [s study];
  31. }
复制代码
为什么输出的是:
名字的人在吃饭
名字为的人的学习成绩为89.5。

当把name的值改为英文字符的时候输出就正常了,这是为什么?

作者: 香草芭芙    时间: 2015-5-12 01:53
  1. #import <Foundation/Foundation.h>
  2. @interface Students : NSObject {
  3. @public
  4.     NSString * name;
  5.     double score;
  6.     int age;
  7. }
  8. - (void)eat;
  9. - (void)study;
  10. @end

  11. @implementation Students
  12. - (void)eat {
  13.     NSLog(@"名字为%@的人在吃饭", name);
  14. }
  15. - (void)study {
  16.     NSLog(@"名字为%@的人的学习成绩为%.1f。", name, score);
  17. }
  18. @end

  19. int main() {
  20.     Students * s = [Students new];
  21.     s->name = @"张三";
  22.     s->age = 18;
  23.     s->score = 89.5;

  24.     [s eat];
  25.     [s study];
  26. }
复制代码

作者: 王二小。    时间: 2015-5-12 10:09
char *name;
因为你Student类定义的 *name类型是char类型,而你在赋值的时候给它赋的是 字符串类型,所以没有赋值 成功,所以就没有值 显示出来 ,楼主看看是不是我说的这个情况 。
作者: liu01230    时间: 2015-5-12 11:48
香草芭芙 发表于 2015-5-12 01:53

那为什么写成英文字符就可以输出呢?
作者: liu01230    时间: 2015-5-12 11:49
王二小。 发表于 2015-5-12 10:09
char *name;
因为你Student类定义的 *name类型是char类型,而你在赋值的时候给它赋的是 字符串类型,所以 ...

不是的,char *name就是字符串类型的,name在这里是指针,指向字符串的首地址
作者: liu01230    时间: 2015-5-12 12:25
香草芭芙 发表于 2015-5-12 01:53

知道了,上面的代码没有看:L
作者: 王二小。    时间: 2015-5-12 14:02
liu01230 发表于 2015-5-12 11:49
不是的,char *name就是字符串类型的,name在这里是指针,指向字符串的首地址 ...

不对吧,那也应该是字符的指针,不是字符串的指针阿,应该是指向字符的地址吧?
作者: shenxian88    时间: 2015-5-12 16:56
因为NSLog不能输出C语言字符串
作者: chensc    时间: 2015-5-12 18:15
学习学习!
作者: 大可乐    时间: 2015-5-12 19:11
顶、、、、、、、、、、、、、




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2