C中 传递 数组 ,参数不能传递进去。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C中 传递 数组 ,参数不能传递进去。相关的知识,希望对你有一定的参考价值。

void upReport(int Rnum)

uint8 newreport[9];
DisplayHistoryDate(2,newreport );

void DisplayHistoryDate (uint8 line, uint8 *shuzu )

uint8 n;

const char *pText;
char pLcdLineBuffer[16];
//GetStuctData(shuzu);

pLcdLineBuffer[0] = ' ';

pLcdLineBuffer[1] = '2';
pLcdLineBuffer[2] = '0';

pLcdLineBuffer[3] = getTimeBit(shuzu[6],2);
pLcdLineBuffer[4] = getTimeBit(shuzu[6],1);//getTimeBit(CLOCK_TIME.year,1) ;
pLcdLineBuffer[5] = 'q';
pLcdLineBuffer[6] = 'r'; //年
pLcdLineBuffer[7] = getTimeBit(shuzu[5],2);
pLcdLineBuffer[8] = getTimeBit(shuzu[5],1);
pLcdLineBuffer[9] = 's';
pLcdLineBuffer[10] = 't'; //月
pLcdLineBuffer[11] = getTimeBit(shuzu[4],2);
pLcdLineBuffer[12] = getTimeBit(shuzu[4],1);
pLcdLineBuffer[13] = 'u';
pLcdLineBuffer[14] = 'v'; //日
pLcdLineBuffer[15] = ' ';

pText=pLcdLineBuffer;
for (n=0; n<16; n++)

HalLcd_HW_WriteChar(line, n, (*(pText++)));




newreport 数组值不能传递给DisplayHistoryDate中的数组请教为什么

参考技术A 把这个函数
void DisplayHistoryDate (uint8 line, uint8 *shuzu )
写到 void upReport(int Rnum) 前面。
或 前面加 函数原型声明。

至于调用,
写成 DisplayHistoryDate(2, &newreport[0] ); 就一定可以了。

为啥我不能将常量数组作为参数传递?

【中文标题】为啥我不能将常量数组作为参数传递?【英文标题】:Why can't I pass constant arrays as arguments?为什么我不能将常量数组作为参数传递? 【发布时间】:2016-08-16 07:17:42 【问题描述】:

在 C 中,为什么我不能这样做:

arrayfn(1.0, 2.0, 3.0);

如果arrayfn 是某个函数,它接受double[]double* 类型的一个参数,无论哪个。尝试这样做会给我一个语法错误。

有没有一种方法可以让我在 C 中实现这样的目标 - 生成并立即传递一个在编译时已知的数组 - 从而避免花费一行代码预先声明和填充它?

【问题讨论】:

您可以使用复合文字。 好答案;试过了;有用;我们到此结束 在您接受答案之前,我们还没有完成。 【参考方案1】:

简答:您需要使用compound literal。类似的东西

 arrayfn( (double[]) 1.0, 2.0, 3.0 );

应该做的工作。


一些解释

说到这部分,为什么arrayfn(1.0, 2.0, 3.0); 不起作用,因为没有复合文字的语法,1.0, 2.0, 3.0 是一个大括号括起来的初始化列表。它不表示可以用作函数参数的“对象”。它们不是 “常量数组”,您可能已经想到了。

要添加更多信息,请引用 C11,第 §6.5.2.5 章,复合文字

一个后缀表达式,由一个带括号的类型名称后跟一个大括号括起来的 初始化器列表是复合文字。它提供了一个未命名的对象,其值由初始化列表给出。

【讨论】:

谢谢!有用。有点奇怪,我的直接冲动是运行(double*)1.0, 2.0, 3.0,它没有做我想要做的事情 - 但足够接近! @user3528438:const 是可选的;复合文字不是常量数组,除非您希望它是一个。可以完全合法地被调用函数中的代码修改。

以上是关于C中 传递 数组 ,参数不能传递进去。的主要内容,如果未能解决你的问题,请参考以下文章

c语言 字符串传参问题

C语言中,数组名作为函数参数,属于啥传递,为啥?

为啥数组不能作为函数参数传递?

java 如何将二维数组的一列作为参数传进去 求代码

C语言 -- 如何传递数组参数

为啥指针不能传递正确的值(C)?