微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 指针数组与数组学习

指针数组与数组学习

时间:11-27 来源:互联网 点击:
今天看见一段代码,有点懵懂,如下

Get_arg(Buff, &argc, argv);

static void Get_arg(U8 *cmdline, U8 *argc, U8 **argv)

{

#define STATE_WHITESPACE 0

#define STATE_WORD 1

U8 *c = NULL;

int state = STATE_WHITESPACE;

int i = 0;

*argc = 0;

if(strlen((const char*)cmdline) == 0)

{//命令字符串为空

return;

}

c = cmdline;

while(*c != )

{

if(*c == )

*c = ;

c++;

}

c = cmdline;

i = 0;

while(*c != )

{

if(state == STATE_WHITESPACE)

{

if(*c != )

{

argv[i] = c;

i++;

state = STATE_WORD;

}

}

else

{

if(*c == )

{

*c = ;

state = STATE_WHITESPACE;

}

}

c++;

}

*argc = i; //分解后命令字符串数

#undef STATE_WHITESPACE

#undef STATE_WORD

}

参数中这么指针还真是晕,疑惑:

ComapanyData.printPasswd[0]=strtoul(argv[2],0,16);

我在应用中明明记得argv[2]是一个字符串,一个数组怎么会有字符串呢?

原来如此argv[]是个定义为u8 的指向指针的指针,也就是argv[]里的任何一个元素都是指针。

那么指针数组和和数组的区别在哪?本人才识学浅,只能理解到下边。

举例来说,定义u8 a[2];那么a[0]=1;a[1]=2;就是说数组可以定义为一个字符而不是字符串,

如果定义一个指针数组 u8 *b[2]那么b[0]可以为字符串就是b[0]=“123”,b[1]=“345”,认识后不在模糊。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top