程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> c語言-C語言 struct結構體 發現的一個問題 百思不得其解,求大神為我解惑

c語言-C語言 struct結構體 發現的一個問題 百思不得其解,求大神為我解惑

編輯:編程解疑
C語言 struct結構體 發現的一個問題 百思不得其解,求大神為我解惑

代碼如下

#define _CRT_SECURE_NO_WARNINGS//vs報scanf警告
#include<stdio.h>
#include<string.h>

struct Student
{
    char name[20];
    char age;
    char sex;
};
int main() {
    struct Student st[] = { {"aaa",25,1},{"bbb",40,0}, {"ccc",30,1},{"ddd",34,1},{"eee",79,0} };//聲明且初始化
    int num = sizeof(st) / sizeof(st[0]);//計算出成員數量
    printf("%d\n", sizeof(st));//這裡輸出結構體數組st所占的內存大小,這裡是110byte,5個成員,每個成員22byte
    for (int i = 0; i < num; i++)//冒泡排序,以年齡排序
    {
        for (int j = 0; j < num - i; j++)
        {
            if (st[j].age > st[j + 1].age)
            {
                st[num] = st[j];//這裡我突發奇想把大的放置在數組後面,程序運行起來沒問題,不知道實際上能不能這樣???
                st[j] = st[j + 1];
                st[j + 1] = st[num];
            }
        }
    }
    scanf("%20s", st[5].name);//向數組添加新成員
    scanf("%d", &st[5].age);
    scanf("%d", &st[5].sex);
    num = sizeof(st) / sizeof(st[0]);//問題來了!這裡怎麼還是5,不是6呢????那怎麼輸出新成員的信息呢???
    printf("%d\n", sizeof(st));
    for (int i = 0; i < num;i++)
    {
        printf("%s,%d,%d\n", st[i].name, st[i].age, st[i].sex);
    }
    return 0;
}

最佳回答:


 struct Student st[] = { {"aaa",25,1},{"bbb",40,0}, {"ccc",30,1},{"ddd",34,1},{"eee",79,0} };  數組初始化時就是[5],數組下標是 0 - 4

 if (st[j].age > st[j + 1].age)  //可以實現年齡從小到大。。



u012317668
u012317668
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved