社区
C语言
帖子详情
数组做为参数时从汇编语言看传递的是指向该数组的指针还是数组本身?
Keanu_Rocky
2002-10-15 04:13:10
只要有说服力,一定给高分。
...全文
69
12
打赏
收藏
数组做为参数时从汇编语言看传递的是指向该数组的指针还是数组本身?
只要有说服力,一定给高分。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
johnmack
2002-10-15
打赏
举报
回复
是指针啦!
Keanu_Rocky
2002-10-15
打赏
举报
回复
谢啦,我明白啦。
同桌老王
2002-10-15
打赏
举报
回复
废话,是指针
gongdath
2002-10-15
打赏
举报
回复
应该是指针.
筷子哥
2002-10-15
打赏
举报
回复
指针!
你可以想象一下编译过程,
词法分析的时候,应该是指针吧,产生参数表
那么,中间代码的时候,有必要具体到内存单元吗,不利于兼容吧
所以,还是指针
功名半纸
2002-10-15
打赏
举报
回复
指针!
前面几位都说的很清楚了!
bonnyone
2002-10-15
打赏
举报
回复
不管用指针还是数组,他们传递的统统是数组或指针的头地址。
举个例子:
#include <iostream.h>
#include <time.h>
#include <stdlib.h>
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
void shell(int *a,int n) //可以改成void shell(int a[10],int n)
//其中10可以改成其他数,效果一样
{
for(int gap=n/2;gap>0;gap/=2)
for(int j=gap;j<n;j++)
for(int i=j-gap;i>0&&a[i]<a[i+gap];i-=gap)
swap(a[i],a[i+gap]);
}
void main()
{
time_t t;
int arr[20];
srand((unsigned int)time(&t));
for(int i=0;i<20;i++)
{
arr[i]=rand()%1000;
cout<<arr[i]<<" ";
if((i+1)%11==0)
cout<<endl;
}
shell(arr,20);
for(i=0;i<20;i++)
{
cout<<arr[i]<<" ";
if(i%10==0)
cout<<endl;
}
cout<<endl;
}
zhf0021
2002-10-15
打赏
举报
回复
是指针,上面几为讲的很清楚
asvaboy1980
2002-10-15
打赏
举报
回复
指针:)
blh
2002-10-15
打赏
举报
回复
不管你的函数定义成
fun(char *p)
还是
fun(char p[])
编译器按照相同的方法处理,呵呵,看看下面的c源码和汇编代码
char c[10];
void fun(char p[])
{
p[0] = 10;
}
void fun1(char *p)
{
p[0] = 10;
}
char a;
int main()
{
fun1(&a);
fun(c);
fun1(c);
return 0;
}
~
.file "exa35.c"
.version "01.01"
gcc2_compiled.:
.text
.align 4
.globl fun
.type fun,@function
fun:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb $10, (%eax)
popl %ebp
ret
.Lfe1:
.size fun,.Lfe1-fun
.align 4
.globl fun1
.type fun1,@function
fun1:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %eax
movb $10, (%eax)
popl %ebp
ret
.Lfe2:
.size fun1,.Lfe2-fun1
.align 4
.globl main
.type main,@function
main:
pushl %ebp
movl %esp, %ebp
subl $8, %esp
subl $12, %esp
pushl $a
call fun1
addl $16, %esp
subl $12, %esp
pushl $c
call fun
addl $16, %esp
subl $12, %esp
pushl $c
call fun1
addl $16, %esp
movl $0, %eax
leave
ret
.Lfe3:
.size main,.Lfe3-main
.comm c,10,1
.comm a,1,1
.ident "GCC: (GNU) 2.96 20000731 (Red Hat Linux 7.3 2.96-110)"
step_by_step
2002-10-15
打赏
举报
回复
这个问题还有疑义么?当然是指针了。
你函数申明的时候void fn(char *pchArray);和void fn(char pchArray[]);
效果一样
blue_coco
2002-10-15
打赏
举报
回复
应该是指针。
有个例子:
a:
char a[100];
sizeof(a) = 100; ///////////////////////1
b:
void fun(char a[100])
{
sizeof(a) = 4;//////////////////////2
}
由1,2两处的值可以发现。
你必须知道的495个C语言问题
例如定义一个包含N个
指向
返回
指向
字符的
指针
的函数的
指针
的
数组
? 1.22 如何声明返回
指向
同类型函数的
指针
的函数?我在设计一个状态机,用函数表示每种状态,每个函数都会返回一个
指向
下一个状态的函数的
指针
。可我...
C语言程序设计(谭浩强)第三版
8.7.3
指针
数组
作main函数的形参 8.8动态内存分配与
指向
它的
指针
变量 8.8.1什么是内存的动态分配 8.8.2怎样建立内存的动态分配 8.8.3void
指针
类型 8.9有关
指针
的小结 习题 第9章;用户自己建立数据类型 ...
java
数组
传递
是引用吗_
数组
是通过值
传递
还是通过Java引用
传递
?
本问题已经有最佳答案,请猛点这里访问。Possible Duplicate:Is Java"pass-by-reference"?
数组
不是Java中的原始类型,但它们也不是对象,所以它们是通过值
传递
还是...在对象的情况下,
传递
的是对该对象(即
指针
)的...
c51 语言
指针
与
数组
函数调用,C51中函数调用
时
参数
是怎么
传递
的?
原标题:C51中函数调用
时
参数
是怎么
传递
的?先说一下首先问一个问题,C51 中函数调用
时
参数
是怎么
传递
的?你肯定会说是通过堆栈把实参压栈
传递
的对吧?不对哦,8051 单片机内存十分有限,没有软件堆栈,函数调用不...
基于arm的C++反汇编
数组
和
指针
的寻址
指向
数组
的
指针
变量 虽然
数组
和
指针
都是针对地址操作,但它们有许多不同之处。
数组
是相同数据类型的数 据集合,以线性方式连续存储在内存中;而
指针
只是一个保存地址值的4字节变量。在使用中,
数组
名是一个地址...
C语言
69,371
社区成员
243,082
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章