社区
C语言
帖子详情
请教*P和P[0]的区别?
zhuangmin
2005-04-11 12:11:32
一个数组,比如int P[10]
如果当作传递参数时,*P和P[0]有啥区别?
实参、形参的区别?
比如
void Func(int *P)
void Func(int P[0])
...全文
1113
48
打赏
收藏
请教*P和P[0]的区别?
一个数组,比如int P[10] 如果当作传递参数时,*P和P[0]有啥区别? 实参、形参的区别? 比如 void Func(int *P) void Func(int P[0])
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
48 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
keen_2000_0
2005-04-12
打赏
举报
回复
看的我头晕了!
at1998
2005-04-12
打赏
举报
回复
?
copygirl
2005-04-12
打赏
举报
回复
Func( a )
这个函数,你写它是为了证明:数组变量传过去后,a++会改变其值,对不对?
那为什么你传Func( a ),而不传数组变量Func( a[0] )呢?
最后你传的是地址,值当然会变了。
copygirl
2005-04-12
打赏
举报
回复
什么跟什么啊
pcboyxhy
2005-04-12
打赏
举报
回复
Project1.exe 遇到问题需要关闭。我们对此引起的不便表示抱歉。
<?xml version="1.0" encoding="UTF-16"?>
<DATABASE>
<EXE NAME="Project1.exe" FILTER="GRABMI_FILTER_PRIVACY">
<MATCHING_FILE NAME="Project1.exe" SIZE="14546" CHECKSUM="0xFD58A392" MODULE_TYPE="WIN32" PE_CHECKSUM="0xAD8E" LINKER_VERSION="0x10000" LINK_DATE="04/12/2005 06:15:38" UPTO_LINK_DATE="04/12/2005 06:15:38" />
</EXE>
<EXE NAME="kernel32.dll" FILTER="GRABMI_FILTER_THISFILEONLY">
<MATCHING_FILE NAME="kernel32.dll" SIZE="1144320" CHECKSUM="0x8E03EFD9" BIN_FILE_VERSION="5.1.2600.2180" BIN_PRODUCT_VERSION="5.1.2600.2180" PRODUCT_VERSION="5.1.2600.2180" FILE_DESCRIPTION="Windows NT BASE API Client DLL" COMPANY_NAME="Microsoft Corporation" PRODUCT_NAME="Microsoft(R) Windows(R) Operating System" FILE_VERSION="5.1.2600.2180 (xpsp_sp2_rtm.040803-2158)" ORIGINAL_FILENAME="kernel32" INTERNAL_NAME="kernel32" LEGAL_COPYRIGHT="(C) Microsoft Corporation. All rights reserved." VERFILEDATEHI="0x0" VERFILEDATELO="0x0" VERFILEOS="0x40004" VERFILETYPE="0x2" MODULE_TYPE="WIN32" PE_CHECKSUM="0x1242EA" LINKER_VERSION="0x50001" UPTO_BIN_FILE_VERSION="5.1.2600.2180" UPTO_BIN_PRODUCT_VERSION="5.1.2600.2180" LINK_DATE="08/16/2004 23:38:36" UPTO_LINK_DATE="08/16/2004 23:38:36" VER_LANGUAGE="中文(中国) [0x804]" />
</EXE>
</DATABASE>
Func(a[0]);//这个是错误的,我为什么要写。 如果A[0] = -100呢?
--------------------
Func(a[0]);这样写是错的吗?你试过了吗?
既然你已经定义过了:int a[]={1,2,3};
难道不知道a[0]就是1?
晕哦
这样写的结果就是上面的强制关闭
little_paradise
2005-04-12
打赏
举报
回复
作为函数参数,他们没有任何区别,一个指针么
rocklabzhang
2005-04-12
打赏
举报
回复
数组名作为函数参数,会被弱化成相应的指针类型,传的是地址
数组元素作为函数参数,和一般的传值是一样的
zhuangmin
2005-04-11
打赏
举报
回复
但用*P也是传值啊
copygirl
2005-04-11
打赏
举报
回复
最后一句对了。
用P[0]做参数与用普通变量做参数无区别。
都只是传值,不是传地址。
你把数组理解为若干个变量的集合就可以了。
zhuangmin
2005-04-11
打赏
举报
回复
emm.....
还不是很明白, pcboyxhy的意思是这个Func(*P)只是传递了P指针的值嘛,就是传说中的行参?
不会因为调用函数对参数的改变而影响改变参数的值?
有点晕晕的。
用&做引用就有区别了,那还是没提到P[0]做参数啊?
偶笨
pcboyxhy
2005-04-11
打赏
举报
回复
void Func(int *P)
传过去的不过是指针的值
不是指针的地址
所以改变P的值不会影响 调用这个函数的那个函数里面P的值
void Func(int *P)
{
P++;
}
int *p=malloc(100);
Func(p); //p的值不便
zhuangmin
2005-04-11
打赏
举报
回复
*P==P[0]偶晓得,但做参数传递时有啥不同呢?
苦闷,前天被问到这问题,当时胡说了点
zhousqy
2005-04-11
打赏
举报
回复
沒有區別,都是一個指針。
llmsn
2005-04-11
打赏
举报
回复
代表的是一个意思.
zhuangmin
2005-04-11
打赏
举报
回复
谢谢小猩猩,但偶想问做参数传递的时候,会不会有什么情况发生,比如会泄露内存或指针P被改变了。
究竟有啥区别呢?
pcboyxhy
2005-04-11
打赏
举报
回复
没有区别
*(p+i) 就是 p[i] 这里是这样的
fjliningcd
2005-04-11
打赏
举报
回复
void Func(int *P)
void Func(int P[0])
对于函数的参数为数组类型,实际上都被编译器认为是指针类型
所以
void Func(int *P)
void Func(int p[0])
void Func(int p[])
void Func(int p[1])
这些
实际上都为被编译器认为
是
void Func(int *P)
这个我爱看,哈哈,如果能这样理解就好了
========================================
就这样概括
这里sizeof(p) = 4,就可以说明他们确实都是当作指针用,ok
gudulyn
2005-04-11
打赏
举报
回复
看的头都大了,建议搂主看明白了,给大家总结一下。先谢过了。
xjp6688
2005-04-11
打赏
举报
回复
void Func(int *P)
建议这样使用,关于这些问题,建议看C专家编程
superspeed2005
2005-04-11
打赏
举报
回复
声明函数的时候 还没看到过 void func( int p[0] )
这种形式 真是自己找麻烦 看得头晕
加载更多回复(28)
ThinkPHP5生成二维码及背景图片合成
二维码是我们在开发网站和项目的时候经常遇到的,我第一次接触二维码时,翻过许多资料,也
请教
许多所谓高人,被整的还是一头雾水,于是自己下决心一定搞明白二维码到底怎么回事,在经历许多坑,花费许多时间和精力后...
int *p() ; int (*p)();
指向函数的指针 ...很简单的理解吗,c语言中()就代表了函数,所以把 *p用括号括在一起变作 (*p)就代表了一个函数。 #include <stdio.h> int main() { int num; int choice; int res; i...
请教
char ***p是什么意思?
如何初始化?谢谢.急
从Windows到Linux—— 快速上手指南
从Windows到Linux—— 快速上手指南 作者:乾坤一笑[smileonce] 快速上手指南 从Windows到Linux --??快速上手指南 ????...本篇,面向的对象是有N年Windows使用经验,而对Linux/Unix一无所知...这是个小聪明,不好意思:p
请教
高手!认真研究了一下51单片机端口原理图,P0口是双向口,准双向口作为输入时必须要先写1(这个知道)
但是发现P0口作为输入时也应该要先写1(无论加不加上拉电阻,加了就和P1口差不多)。但是好多资料都说双向与准双向的
区别
就是作为输入时要不要先写1,请问这是不是矛盾了还是咋的???求解释!!! 答 因为如果...
C语言
69,322
社区成员
243,077
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章