數個Array問題?
本帖最后由 pizg 于 2012-12-7 10:03 编辑請教各位前輩:
1. 如果陣列元素並非單一性質,
例如a[] = { "A1028235343", "apple" , "60-3-7", 165.3};
該如何宣告?
2. 該如何知道Array的元素數量?
3. 如果已先宣告並給值, 如下
int a[]={0,1,2};
該如何動態新增一個Array元素?
4.假設
int a1[]={0,1,2};
int a2[]={0,1,2,3};
該如何把a2的值複製給a1? int a[]={0,1,2};
是分配在栈或者数据段上的,并且由编译器计算int a[]占用的空间大小,无法动态增加新的元素
对于编译期间已确定长度的数组,要知道数组元素数量的话: sizeof(a) / sizeof(a) 本帖最后由 pizg 于 2012-12-7 10:13 编辑
histamine 发表于 2012-12-7 09:47 http://www.geek-workshop.com/static/image/common/back.gif
int a[]={0,1,2};
是分配在栈或者数据段上的,并且由编译器计算int a[]占用的空间大小,无法动态增加新的元 ...
感謝你的回覆.
針對動態增加新元素, 我的解決辦法如下:
int a1[]={0,1,2};
int n = sizeof(a1) / sizeof(int);
int a2;
for (int j=0; j<n;j++) {
a2=a1;
}
a2 = 3;
此時 a2[] = {0,1,2,3},
接下來我就不會了,
該如何把a2的元素全數丟給a1?
我的貼文剛剛又有作少許的修改,
你是否也可以幫忙解答另幾項問題?
感謝. 最简单的方法实现事先声明一个比较大的数组,比如int a,然后用一个变量记录已经存放了多少个元素,不过数组中存放元素的总数量不能超过这个数组的长度
或者使用C语言malloc/realloc/free等内存动态管理函数
或者学习C++的std::vector
arduino可用https://github.com/maniacbug/StandardCplusplus这个库中的vector 本帖最后由 histamine 于 2012-12-7 11:09 编辑
1. 如果陣列元素並非單一性質,
例如a[] = { "A1028235343", "apple" , "60-3-7", 165.3};
該如何宣告?
=>#include <stdio.h>
typedef enum _TYPE_ID {
TYPE_ID_STRING,
TYPE_ID_DOUBLE,
TYPE_ID_INTEGER
} TYPE_ID;
typedef struct _ANY_TYPE {
TYPE_ID id;
union {
char *v_string;
double v_double;
intv_int;
} value;
} ANY_TYPE;
ANY_TYPE a[] =
{
{ TYPE_ID_STRING,{ v_string : "A1028235343" } },
{ TYPE_ID_STRING,{ v_string : "apple" } },
{ TYPE_ID_STRING,{ v_string : "60-3-7" } },
{ TYPE_ID_DOUBLE,{ v_double : 165.3 } },
{ TYPE_ID_INTEGER, { v_int : 123 } }
};
int main ( void )
{
int i;
for ( i = 0; i < sizeof( a ) / sizeof( *a ); i++ )
{
switch( a.id )
{
case TYPE_ID_STRING:
printf( "Type = string, Value = %s\n", a.value.v_string );
break;
case TYPE_ID_DOUBLE:
printf( "Type = double, Value = %f\n", a.value.v_double );
break;
case TYPE_ID_INTEGER:
printf( "Type = int, Value = %d\n", a.value.v_int );
break;
default:
printf( "Unknown Type!\n" );
break;
}
};
return 0;
} histamine 发表于 2012-12-7 10:59 static/image/common/back.gif
1. 如果陣列元素並非單一性質,
例如a[] = { "A1028235343", "apple" , "60-3-7", 165.3};
感謝指點:). C語言中有個對付不同資料型態的東西叫做struct
可以這樣寫:
struct abc{ //定義abcstruct
int a;
char b[];
};//<這個分號不能少
struct aa;
页:
[1]