1. 如何在C語言中,把數組加入到頭文件中
例如你方法或罩此a.h的頭文件中。
以後加入b.c文件需要使用p[0-7],則在b.c文件中先包含衫迅a.h,悶告即#include"a.h",然後在b.c中就能直接使用p[0-7]了。
2. C語言中怎樣在頭文件中定義一個能夠在所有文件中都可以使用的全局數組變數
C語言可以通過在.c文件中定義,頭文件中extern的方式實現一個能夠在所有文件中都可以使用的全局數組變數。
具體做法如下:
設有一個多項目文件有 1.c、2.c和3.c三個源程序文件;
如果有一個全局數組需要所有文件使用,那麼可以添加一個data.c文件,在其中添加全局數組的定義;
向項目中添加data.h文件,在data.h文件中用 extern聲明該數組;
只需要在相應的.c文件中添加#include "data.h",那麼久可以使用data.c中的全局數組了。
3. 如何在C語言中,把數組加入到頭文件中
例如你哪稿神方法a.h的
頭文件
中。
以後加入b.
c文李虧件
需要使用p[0-7],則在b.c文件中先包含a.h,即#include"a.h",敬數然後在b.c中就能直接使用p[0-7]了。
4. C語言頭文件中,如何在申明數組的同時賦值並在C文件下可以用
你好!
一般類型的(非const)數組定義不應該放在頭文件中,這樣會導致變數重復定物納義而使編譯失敗。至於數組的初始化,上面的幾冊雹位網友已經說清楚了,應該將數組定義罩姿沒為外部變數,並在頭文件中聲明,這樣就可以在這個程序的其它文件中使用而且不用擔心會有重復定義
僅代表個人觀點,不喜勿噴,謝謝。
5. 數組可以定義在.h文件中嗎
可以。
任何程序部分都可以定義在 .h 文件中。
#include "my.h"
就是在預編譯期,把my.h 的文和扮本內容 嵌入 寫這句 包含my.h 的地方。
例如:
#include <stdio.h>
int a,b;
void fun1();
int x[5]={1,2,3,4,5};
char c[5][10]={"ab1","cd2","ef3","hi4","jk5"};
FILE *fp;
int main(){
}
-------------
你可以抽出
int x[5]={1,2,3,4,5};
char c[5][10]={"ab1","cd2","ef3","hi4","jk5"};
放入 my.h
----
寫程序孫租:
#include <stdio.h>
int a,b;
void fun1();
#include "my.h"
FILE *fp;
int main(){
}
---
這個喚凱灶程序同原來效果一樣。
6. 定義字元串數組 需要包含頭文件「string」么
字元數組可以看成是 多個伍肢字腔洞世符變數的排列 按內存地址排列...
定義變數不需要任何頭文件和函數,數組同樣也不需要
string.h是C庫函數中的一個頭文件,它包括一些常用的字元串處理函數...如...
字元串連接函數 strcat
字元串復制函數 strcpy
字元顫前串長度函數 strlen
字元串小寫函數 strlwr
字元串大寫函數 strupr
在這文件下可能還有一些其他函數...具體我就不是太清楚了...
只有在你需要用到這寫函數時 才需要包含string.h
7. 頭文件中定義數組的問題
head.h定森團義了int x;
a.cpp包含了head.h
b.cpp包含了head.h
這事head.h中的int x;定義分別在兩個cpp文件中定義了,就出現了重復定義的情況,因為int x出現了兩次
如果非要把全局變數寫入頭文件,可以這樣
head.h聲明extern int x;
head.cpp中包含head.h並且定義int x;
a.cpp包含了head.h
b.cpp包含了head.h
這時頭文件是聲明,而鏈接時聲明是弱定義櫻判,不會造成重復定義,真正的定義脊春改在head.cpp中
8. 如何定義CArray動態數組我想在頭文件中定義動態數組為什麼不可以,因為我想把它傳遞到另一個類中
template <class TYPE, class ARG_TYPE> class CArray : public
CObject
參數:
TYPE
模板參數指定存儲在數組中的對象的類型。TYPE是一個由CArray返回的參數。
ARG_TYPE
模板參數指定用於訪問存儲在數組中對象的參數類型。通常是一個對TYPE的參考。ARG_TYPE是一個傳遞給CArray的參數。
說明:
CArray類支持與CArray相似的數組,但是必要時可以動態壓縮並擴展。數組索引從0開始。可以決定是固定春穗清數組上界還是允許當添加元素時擴展當前的邊界。內存對上界是連續地分配空間,甚至一些元素可為空。
和CArray一樣,CArray索引元素的訪問時間是不變的,與數組大小無關。
提示:
在使用一個數組之前,使用SetSize建立它的大小和為它分配內存。如果不使用SetSize,則為數組添加元素就會引起頻繁地重新分配和拷貝。頻繁地重新分配和拷貝不但沒有效率,而且導致內扒前存碎片。
如果需要一堆數組中的個別數據,必須設置CDumpContext對象的深度為1或更大。
此類的某成員函數調用全局幫助函數,它必須為CArray的大多數使用而定製。請參閱宏和全局量部分中的「類收集幫助器」。
當從一個CArray對象中移去元素時族答,幫助函數DestructElements被調用。
當添加元素時,幫助函數ConstructElements被調用。
數組類的派生與列表的派生相似。
如果要了解關於使用CArray的更多信息,請參閱聯機文檔「Visual
C++程序員指南」中的「收集」。
請記住:使用CArray一定要包含頭文件afxtempl.h。
#include <afxtempl.h>
用法
CArray <CPoint,CPoint&> m_Array;
m_Array.SetSize(10,10);
CPoint pt1(10,10);
m_Array.Add(pt1);
CPoint pt2(10,50);
m_Array.Add(pt2);
CPoint pt3(10,100);
m_Array.Add(pt3);
int size=m_Array.GetSize();
CClientDC dc(this);
dc.MoveTo(0,0);
CPoint pt;
for(int i=0;i<size;i++)
{
pt=m_Array.GetAt(i);
dc.LineTo(pt);
}
9. 在頭文件中定義了一數組,提示多重定義
我也遇到了這罩圓個問題,最後發簡櫻現把數組定義為static就攔悶叢可以了
staticcharTABLE[2]={0,1};
10. 頭文件中是不是不能定義結構體數組 我看書上都是在頭文件中將一個結構體數組拆分為結構體指針和數組大
//objs.h
structA{
intv;
};
externstructAsa[5];
//objs.c
#include"objs.h"
structAsa[5];
//main.c
#include<stdio.h>
#include"objs.h"
intmain(intargc,char*argv[])
{
sa[0].v=1;
printf("%d",sa[0].v);
return0;
}
上述代碼順利通過編譯,運行沒問題。
關鍵是頭文件中一般不定義變數,而是僅聲明,即需要有 extern 關鍵字,然後在某一個「.c」文件中定義它(此時不帶extern)。
如果你不想在頭文件的褲燃聲明耐悄中帶extern,那麼你需要確保你的這個頭文件僅被某一個「.c/cpp」文件包含,而不能被多個.c包含。如果被多個.c包含,則肯定會造昌純渣成「變數重定義」的編譯錯誤。