可以將struct定義在頭文件里(header file 以.h為后綴名),在其他文件里面引用該頭文件就可以。
為建鄴等地區用戶提供了全套網頁設計制作服務,及建鄴網站建設行業解決方案。主營業務為成都網站建設、網站制作、建鄴網站設計,以傳統方式定制建設網站,并提供域名空間備案等一條龍服務,秉承以專業、用心的態度為用戶提供真誠的服務。我們深信只要達到每一位用戶的要求,就會得到認可,從而選擇與我們長期合作。這樣,我們也可以走得更遠!
例子如下在同一文件夾下創建兩個文件point.h和test1.c:
/*?point.h
*??define?the?point?struct????
*/
typedef?point{
int?x;
int?y;
}Point;
/*?test1.c
*??test?the?point?struct
*/
#include?stdio.h
#include?"point.h"?//你自己寫的頭文件
int?main(){
Point?p;
p.x?=?3;
p.y?=?4;
printf("The?point?is(%d,?%d)\n",?p.x,?p.y);
return?0;
}
題外話,如果你想定義一個結構,可以繼承,可以引用,你可以看看C++關于類的概念,C也可以實現,比較復雜
C++里面
可以這么寫,定義類的數據,結構,成員函數等等
/[0]?class?cell
class?PvCell{
//instance
int?pos;
bool?exist;
double?cell_width;
double?cell_length;
double?distance_topcelledge;
double?distance_bottemcelledge;
public:
//constructor;
PvCell();
PvCell?(int?p,?bool?e,?double?cl,?double?cw,?double?dt,?double?db);
//function
void?setPos(int?m){?pos?=?m;}
void?setExist(bool?b){exist?=?b;}
void?setCellLength(double?celll){cell_length?=?celll;}
void?setCellWidth(double?cellw){cell_width?=?cellw;}
void?setDistanceTopCellEdge(double?top?){distance_topcelledge?=?top;}
void?setDistanceBottomCellEdge(double?bot){distance_bottemcelledge?=?bot;}
int?getPos(void){return?pos;}
bool?getExist(void){return?exist;}
double?getCellLength(void){return?cell_length;}
double?getCellWidth(void){return?cell_width;}
double?getDistanceTopCellEdge(void){return?distance_topcelledge;}
double?getDistanceBottomCellEdge(void){return?distance_bottemcelledge;}
void?print()?const;
void?copycellfrom(PvCell?sourceCell);
void?copycellto(PvCell?targetCell);
};
//[0]
CELL是單元數組(Cell Array)將類型不同的相關數據集成到一個單一的變量中,使得大量相關數據的引用和處理變得簡單方便;需要注意的是,單元數組僅僅是承載其他數據類型的容器,大部分的數學運算只是針對其中的具體數據進行的,而非針對單元數組本身進行。
定義
1. 細胞型數據的定義:
1)直接賦值定義:細胞型變量在定義時需要使用大括號,元素用逗號隔開
例: B = {1:4,A,‘abcd’}
2)使用cell函數,預先為細胞型變量定義空間
例: A = cell(m,n) 定義一個空的m行n列的cell類型
擴展資料:
C語言是普適性最強的一種計算機程序編輯語言,它不僅可以發揮出高級編程語言的功用,還具有匯編語言的優點,因此相對于其它編程語言,它具有自己獨特的特點。具體體現在以下三個方面:
其一,廣泛性。C 語言的運算范圍的大小直接決定了其優劣性。C 語言中包含了34種運算符,因此運算范圍要超出許多其它語言,此外其運算結果的表達形式也十分豐富。此外,C 語言包含了字符型、指針型等多種數據結構形式,因此,更為龐大的數據結構運算它也可以應付。
其二,簡潔性。9 類控制語句和32個KEYWORDS是C語言所具有的基礎特性,使得其在計算機應用程序編寫中具有廣泛的適用性,不僅可以適用廣大編程人員的操作,提高其工作效率,同 時還能夠支持高級編程,避免了語言切換的繁瑣。
其三,結構完善。C語言是一種結構化語言,它可以通過組建模塊單位的形式實現模塊化的應用程序,在系統描述方面具有顯著優勢,同時這一特性也使得它能夠適應多種不同的編程要求,且執行效率高。
參考資料來源:百度百科-CELL
cell數組一般被叫做元胞數組,它的每個單元可以儲存不同的數據類型,可以是數值,字符或矩陣或元胞數組等,類似于學過的c語言里的結構體
1.cell數組的創建
可以直接通過{}類似于矩陣的直接賦值:a={'winter',123,'coming','哈哈'};
也可以通過cell函數預分配內存,再賦值:a=cell(1,4);a={'winter',123,'coming','哈哈'};
2.cell數組的訪問
與普通矩陣,數組的主要區別在于:通過()訪問cell數組時訪問到的是cell單元,通過{}訪問cell數組時訪問到的是cell單元儲存的內容,舉例如下圖所示,其他操作基本一樣。
3.cell數組相關的函數
cell:創建空的元胞數組,預分配內存
celldisp:顯示元胞數組所有內容
cellplot:利用圖形方式顯示內容(因缺思廳?。?/p>
cell2mat:將元胞數組成普通矩陣(要求cell元胞數組的所有內容都必須為相同數據類型,可以為字符,會轉化為字符矩陣)
mat2cell:將普通矩陣轉化成元胞數組
iscell:判斷輸入是否為元胞數組
cellfun:為cell數組的每個cell單元執行指定的函數,fun可以是特殊的函數或者句柄
b={[1,2,1];[2,1,1];[1,1,2]};
c=cellfun(@(x)(mat2str(x)),b,'un',0)
更一般的例子參見
4.cell單元的刪除
我們知道矩陣及矩陣的刪除可以通過[]實現:
元胞數組操作類似但和其賦值一樣有區別,區別就在于{}和()
a={1,2,3};
a{1}=[];%并不能刪除第一個cell單元,只是變成空值
a(1)=[];%刪除第一個單元
a(:)=[];%一次性刪除所有cell單元
如果p為一個數,那么h(1)=p,是沒有問題的。
如果p為一個向量,那么h(1,:)=p是沒有問題的。
如果p是一個矩陣的話,上面的兩種賦值方法都是會有錯誤的。
那么要如何處理呢?
這時就用到了cell數據類型了。cell的每個單元都可以存儲任何數據,比如傳遞函數等。當然,存儲矩陣更是沒有問題的了。但是用cell數據類型之前,要先初始化。
a=cell(n,m)
那么就把a初始化為一個n行m列的空cell類型數據。
如何賦值呢?
a{1,1}=rand(5)
那么a的1行1列的單元中存儲的就是一個隨機的5×5的方陣了。
那么要用第一個單元中的方陣中的某個值呢?
可以如下引用:a{1,1}(2,3)
就可以了,引用cell單元時要用{},再引用矩陣的某個數據就要用()了。
cell單元中的每個單元都是獨立的,可以分別存儲不同大小的矩陣或不同類型的數據。
#include?stdio.h
#include?stdlib.h
struct?cell
{
char*?name;
int?time;
int?seat;
int?saled;
}?a,b,c,d;
int?sel=0;
void?title();
void?saleproc();
int?saleThread(struct?cell*?ce,int?dd);
void?tiupiaoproc();
int?tiupiaoThread(struct?cell*?ce);
void?count();
int?init(struct?cell*?ce,char*?name,int?time,int?seat)
{
ce-name=name;
ce-time=time;
ce-seat=seat;
ce-saled=0;
return?1;
}
int?saleThread(struct?cell*?ce,int?dd)
{
if((ce-seat-ce-saled)=dd)
{
ce-saled+=dd;
printf("售票成功!按ESC鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?1;
}
else
{
printf("售票失敗---余票不足!按ESC鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?0;
}
}
void?saleproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*????????廳?影片?時間?余票????????*\n");
printf("*?????????????????????????????????*\n");
printf("*?A?%s?%d:%d?%3d?*\n",a.name,a.time/60,a.time%60,a.seat-a.saled);
printf("*?????????????????????????????????*\n");
printf("*?B?%s?%d:%d?%3d?*\n",b.name,b.time/60,b.time%60,b.seat-b.saled);
printf("*?????????????????????????????????*\n");
printf("*?C?%s?%d:%d?%3d?*\n",c.name,c.time/60,c.time%60,c.seat-c.saled);
printf("*?????????????????????????????????*\n");
printf("*?D?%s?%d:%d?%3d?*\n",d.name,d.time/60,d.time%60,d.seat-d.saled);
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請選擇放映廳(a,b,c,d)和要購的票數(按ESC鍵返回主菜單)(格式:?a?5):\n");
fflush(stdin);
char?cc;
int?dd;
dd=_getche();
if(dd==27)
{
f=0;
break;
}
else
{
cc=(char)dd;
}
scanf("%d",dd);
switch(cc)
{
case?'a':
saleThread(a,dd);
f=0;
break;
case?'b':
saleThread(b,dd);
f=0;
break;
case?'c':
saleThread(c,dd);
f=0;
break;
case?'d':
saleThread(d,dd);
f=0;
break;
default:
break;
}
}
title();
}
int?tiupiaoThread(struct?cell*?ce)
{
if(ce-saled==0)
{
printf("撞尼瑪鬼了?老子一張票都沒賣,?哪來的退票???\n");
fflush(stdin);
int?cc=_getche();
return?0;
}
ce-saled--;
printf("退票成功!?按任意鍵返回主菜單\n");
fflush(stdin);
int?cc=_getche();
return?1;
}
void?tiupiaoproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*??????????????退?票??????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????A?%-20s???????*\n",a.name);
printf("*?????????????????????????????????*\n");
printf("*????B?%-20s???????*\n",b.name);
printf("*?????????????????????????????????*\n");
printf("*????C?%-20s???????*\n",c.name);
printf("*?????????????????????????????????*\n");
printf("*????D?%-20s???????*\n",d.name);
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請輸入要退的廳(a,b,c,d):\n");
char?cc;
fflush(stdin);
scanf("%c",cc);
if(cc=='?')
{
f=0;
break;
}
switch(cc)
{
case?'a':
tiupiaoThread(a);
f=0;
break;
case?'b':
tiupiaoThread(b);
f=0;
break;
case?'c':
tiupiaoThread(c);
f=0;
break;
case?'d':
tiupiaoThread(d);
f=0;
break;
default:
break;
}
}
title();
}
void?countproc()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*?統?計?*\n");
printf("*?????????????????????????????????*\n");
printf("*?A廳:?余票?%3d?上座率?%5.2f%%?*\n",a.seat-a.saled,(((float)a.saled/(float)a.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?B廳:?余票?%3d?上座率?%5.2f%%?*\n",b.seat-b.saled,(((float)b.saled/(float)b.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?C廳:?余票?%3d?上座率?%5.2f%%?*\n",c.seat-c.saled,(((float)c.saled/(float)c.seat)*100));
printf("*?????????????????????????????????*\n");
printf("*?D廳:?余票?%3d?上座率?%5.2f%%?*\n",d.seat-d.saled,(((float)d.saled/(float)d.seat)*100));
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("按ESC鍵返回主菜單!\n");
fflush(stdin);
int?cc=_getche();
if(cc==27)
{
f=0;
break;
}
}
title();
}
void?title()
{
int?f=1;
while(f)
{
system("cls");
printf("***********************************\n");
printf("*?????????????????????????????????*\n");
printf("*????????歡迎光臨牛B電影院????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????1.?售?票?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????2.?退?票?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????3.?統?計?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("*????????????4.?退?出?????????????*\n");
printf("*?????????????????????????????????*\n");
printf("***********************************\n");
printf("請選擇:(1,2,3,4)?\n");
fflush(stdin);
scanf("%d",sel);
getchar();
switch(sel)
{
case?1:
saleproc();
f=0;
break;
case?2:
tiupiaoproc();
f=0;
break;
case?3:
countproc();
f=0;
break;
case?4:
system("exit");
f=0;
break;
default:
break;
}
}
}
int?main(int?argc,?char?*argv[])
{
init(a,"鋼鐵俠3",18*60+30,150);
init(b,"致青春",19*60+30,150);
init(c,"姜戈",20*60+30,150);
init(d,"生化危機4",20*60+20,100);
title();
return?0;
}
網站題目:c語言中的cell函數 c語言calloc函數是啥
文章URL:http://vcdvsql.cn/article12/dopepdc.html
成都網站建設公司_創新互聯,為您提供網站制作、域名注冊、網站排名、服務器托管、App設計、商城網站
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯