这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » IAR 編譯請教

共6条 1/1 1 跳转至

IAR 編譯請教

工程师
2012-09-17 20:28:40     打赏
用const定義數組時,數組名不能作為函數的入口啊??

比如定義:
const unsigned char Welcome[20]={};

有一個函數:
void Display(unsigned char *Address);

這樣用:

Display(Welcome);

在IAR就出錯了。

在有些編譯器是可以的。

大家指點一下吧



关键词: 編譯     請教    

院士
2012-09-17 21:12:50     打赏
2楼
哈佛结构的MCU嘛。

一个存储在数据区,一个存储在程序区。
指针指的不一样……

助工
2012-09-17 21:21:43     打赏
3楼

有些时候指针和数组名可以通用,有些时候不可以!!


院士
2012-09-17 21:29:10     打赏
4楼
都是什么时候呢!
在哪些情况可以互换?在哪些情况就不可以呢~~

助工
2012-09-17 23:22:26     打赏
5楼
规则1:“表达式中的数组名”就是指针。 规则2:C语言把数组下表作为指针偏移量 规则3:作为函数参数的数组名等同于指针   数组与指针可交换性总结: 1. 用a[I]这样的形式对数组进行访问总是被编译器解释为像*(a+1)这样的指针访问。 2. 指针始终就是指针。它绝不可以改写成数组。可以用下标形式访问指针,一般都是指针作为函数参数时,而且实际传递给函数的是一个数组。 3. 在特定的上下文环境中,也就是它作为函数的参数(也只有这种情况),一个数组的声明可以看作是一个指针。作为函数参数的数组(就是在一个函数调用中)始终会被编译器修改成为指向第一个元素的指针。 4. 因此,当把一个数组定义为函数参数时,可以选择把它定义为数组,也可定义为指针。不管用那种方法,在函数内部事实上获得的都是一个指针。 5. 在其他所有情况中,定义和声明必须匹配。如果定义了一个数组,在其他文件对他进行声明时也必须把它声明为数组,指针也是如此。

以前整理的,讨论一下,讨论完了就记住了!

助工
2012-09-18 01:41:36     打赏
6楼
向函数传递一个一维数组: 任何一维数组都可以作为函数实参,形参被改写为指向数组第一个元素的指针,所以需要一个约定来提示数组的长度。一般有两个基本方法: 1,  增加一个额外的参数,表示元素数目(argc就起这个作用) 2,  赋予数组最后一个元素一个特殊的值,提示他是数组的尾部(字符串结尾的‘\0’字符就是起这个作用)。这个特殊值必须不会做为正常的元素值在数组中出现。

共6条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]