传数组参数

 

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

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

 

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

如:

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

传给

printArray (int [],int)

 

对数组的取址是多余的,如 a &a 的值相同。数组本身是一个地址的常量值,不是变量int a[],a是常量。

 

把字符串当作指针

如程序:

#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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值