黑马程序员技术交流社区

标题: 自学C时遇到的两个代码小问题,请教大神,欢迎大家讨论! [打印本页]

作者: Tigerleis    时间: 2015-3-27 17:20
标题: 自学C时遇到的两个代码小问题,请教大神,欢迎大家讨论!
1、C中没有遍历枚举类型的方法,请问如何实现枚举类型的遍历,并且输出枚举类型里面的所有待选值。
eg:enum Sex{男,女,人妖,不男不女,双性人,有待研究};
        请问各路大神,如何输出以上六个选项?

2、结构体指针数组,如何实现直接赋值?
eg:
struct Student{ int no; int age;}s1={1,20},s2={2,18};  //这种定义赋值是可以的,可读性较差,此处简略写下
struct Student* sp[] = {&s1,&s2};
请问如何直接把{1,20},{2,18}这两个结构体地址初始化给sp指针数组,即不通过s1,s2中转,谢谢!

作者: fantacyleo    时间: 2015-3-27 19:16
第一个问题 不知道
第二个问题 没办法 因为{1,20}在尚未赋值给一个变量时,是没有所谓的“地址”概念的。打个比方,你说3这个数在内存中的地址是什么?答案是不知道、没有意义
作者: 1048    时间: 2015-3-27 19:18
有待研究。。。。。
作者: Tigerleis    时间: 2015-3-27 19:30
fantacyleo 发表于 2015-3-27 19:16
第一个问题 不知道
第二个问题 没办法 因为{1,20}在尚未赋值给一个变量时,是没有所谓的“地址”概念的。打 ...

好吧,第二个问题,应该就是你说的那样咯,谢谢啦O(∩_∩)O~
作者: oucding    时间: 2015-3-27 20:12
平时这种小细节的应该多多的留意啊,学习了:lol
作者: hellooc    时间: 2015-3-28 03:29
枚举里不能放这种值,还有,你可以遍历int类型么?
作者: longer057    时间: 2015-3-28 08:35
第一个问题百度一下有解决方法
作者: 狂甩你十八条街    时间: 2015-3-29 16:19
第一个问题,可以这样解决,不过有点麻烦。你看一下,有不明白的我们可以一起交流。
#import <Foundation/Foundation.h>

#include <stdio.h>
int main(int argc, const char * argv[]) {
    @autoreleasepool {
      
        //男是0,女是1,gay是2,不男不女是3,正在研究中是5
         typedef enum  {mam, woman, gay, nomannowoman, searching}sex;
        
        sex a ;
        //这里你输入一个整数,0到3对应各种情况,4以后就是正在研究中
        printf("输入一个整数:");
        scanf("%d", &a);
        //我想不到办法了,只想到了switch,知识有限,就帮你到这吧
        switch(a)
        {
            case mam : printf("man\n");
                break;
            case woman : printf("woman\n");
                break;
            case gay : printf("gay\n");
                break;
            case nomannowoman: printf("nomannowoman\n");
                break;
            default: printf("searching\n");
        }
    }
    return 0;
}





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