当前位置:首页 » 文件管理 » 数组可以用头文件吗
扩展阅读
怎样调整调理植物神经 2025-05-14 14:32:23

数组可以用头文件吗

发布时间: 2023-03-30 19:59:23

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. 设有一个多项目文件有 1.c、2.c和3.c三个源程序文件;

  2. 如果有一个全局数组需要所有文件使用,那么可以添加一个data.c文件,在其中添加全局数组的定义;

  3. 向项目中添加data.h文件,在data.h文件中用 extern声明该数组;

  4. 只需要在相应的.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包含,则肯定会造昌纯渣成“变量重定义”的编译错误。