搜索
您的当前位置:首页正文

传数组参数

来源:易榕旅网
 

多维数组当函数参数,最后几个长度要指定,如:

printArray(int [][2][3],length);

 

一个技巧是把多维数组当一维数组传。

如:

int a[][2]={1,2,3,4}

传给

printArray (int [],int)

 

 

把字符串当作指针

如程序:

#include <stdio.h>

void main(void)

{

char *workdays[] = {"Monday","Tuesday","Wednesday","Thursday","Friday",NULL};

char ** string;

string = workdays;

while(*string)

printf("%s",*string++);

}

 

char title[] = "C" char* title="c" char tittle[] = {'C'} 长度不同,多个一个'/0'.

-------------------------------------------------------------------------------------

数组和指针大多数情况下是等同的,所以在传参数时,假如要传一个数组,数组里面是指针变量,就相当于传指向指针的指针。

如:

int * array[10]

 

printArray(int** array) or printArray(int* array[])

-------------------------------------------------------------------------------------

void main(void)

{

int a[] = {0,1};

*a = 3;

//OK

//a = NULL; 数组a实际上是常量,禁止赋值

printf("%x/n", a);

abcd(a);

printf("%x/n", a); //value of a never changed.

}

 

int abcd(int *a)

{

a = NULL; //OK,因为传指针时,同样是值拷贝,a是变量。

return 0;

}

---------------------------------------------------------------------------------------

结构数组的初始化,是否有括号有很大影响。

typedef struct _IconData{

unsigned int iconID;

unsigned int size;

unsigned char *rgb;

}IconData;

 

IconData a[2] = {1, 1}; //初始化第一个结构的iconID和size

IconData a[2] = {{1}, {1}}; //初始化两个结构的iconID

 

 

二维数组也类似

 

IconData a[][2] = {{1}, {1}};  //初始Icon[0][0] 和 Icon[1][0]的iconID 数组的大小是 2*2

IconData a[][2] = {{{1}, {1}}};  //初始Icon[0][0] 和 Icon[0][1]的iconID 数组的大小是 1*2

 

 

因篇幅问题不能全部显示,请点此查看更多更全内容

Top