1. c語言結構體中奇怪的結構,求解釋。
C++ 中的結構是可以添加函數的。這是C++的結構體與C的結構體的區別之一
你可以直接把它看作C++中的一個類,只是屬性都是Pubilc的
以上看出SSerInfo()是類SSerInfo的構造函數,:後面是參數列表進行初始化類的數據成員
2. c語言結構體問題
1、stutype不是變數名,而是定義一個struct stu結構體新的別名。例如要定義一個該結構體變數可以有以下兩種定義方法:(1)struct stu stu_t; (2)stutype stu_t; 這兩種方法其實是一樣的。
2、如果這么定義結構體(去掉typedef)
struct stu{
int a;
float b;
}stutype;
那麼D就是對的
3. C語言結構體問題
x是結構體指針,和其他指針一樣語言初始化指向一個地址,
例如
int a=23,*pa;
pa=&a;(你的問題類似沒有這句代碼)
這里是一樣的,你只是聲明了x是指針,並沒有指向任何結構體變數,那麼x保存的地址是一個隨機值,直接去訪問這個值的內容,是危險的!
所以2種做法,一種你聲明一個結構體用x指向它,比如 struct a test;
c=&test;這時候你用x-> 的效果就好像你直接訪問test結構體。
另一種是用malloc函數分配一個結構體空間,用x指向它。可以參考malloc函數,格式很統一,都是那個格式。
最後,總結一下:只是聲明一個類型的指針是不能直接用它的,必須讓它指向這種類型的變數或者變數空間。
4. C語言結構體的問題!!!
可以確定,你貼出來的這段代碼沒錯。
snake.x[0]=200;
snake.y[0]=100;
snake.direct=4;
snake.node=4;
snake.life=1;
賦值不能放在頭文件中,要放到cpp中
5. C語言結構體問題。
#include<stdio.h>
intmain()
{intday,month,year,sum,leap;
printf("pleaseinputyear,month,day ");
scanf("%d%d%d",&year,&month,&day);
switch(month)
{case1:sum=0;break;
case2:sum=31;break;
case3:sum=59;break;
case4:sum=90;break;
case5:sum=120;break;
case6:sum=151;break;
case7:sum=181;break;
case8:sum=212;break;
case9:sum=243;break;
case10:sum=273;break;
case11:sum=304;break;
case12:sum=334;break;
default:printf("dataerror");break;
}
sum=sum+day;
if(year%400==0||(year%4==0&&year%100!=0)leap=1;
elseleap=0;
if(leap==1&&month>2)sum++;
printf("Itisthe%dthday.",sum);
return0;
}/*
運行結果如下:
pleaseinputyear,month,day
1992523<回車>
Itisthe144thday.
*/
6. C語言結構體中的[]問題,非高手莫進!
編譯對那個 char table[]; 這種定義會默認解釋成 char table[0];
零長數組, 這個特性多數是編譯器的擴展, 零長數組是不佔用空間的,你它進行 sizeof() 返回是零, 它只是在語法上提供一個符號, 訪問它相關於訪問 tt.num 後續的內存, 就像你第二個例子, 由於局部變數是在棧上分配的, 所以 tt.table[0] 正好落在 begin 上第一個位元組上(即低位元組), 所以 tt.table[0] = 2 相當於:
((char *)&begin)[0] = 2;
7. C語言的結構體問題
void sort(struct student stu[],int n)
{
int i,j,k;
struct student t;
for(i=0;i<n-1;i++)
{
k=i;
for(j=i+1;j<n;j++)
if(stu[j].score>stu[k].score)k=j;
t=stu[i];
stu[i]=stu[k];
stu[k]=t;
}
}
這個就是學生按成績升序排列的函數
#include <stdio.h>
long int fun(int n)
{
int i,a;
for(i=1,a=1;i<=n;i++)
a*=i;
return a;
}
void main()
{int i;
float s=0;
for(i=1;i<=5;i++)
s+=1/fun(i);
printf("%f",s);
}
這是你說的第二個
其實這些都是些比較簡單的`!
覺得可以的話就給分我哦~
呵呵~!