数组传入函数会变吗(当数组作为参数传递给函数时,会向该数组传递
http://www.itjxue.com 2023-01-28 07:56 来源:未知 点击次数:
在c语言中以数组名传递的实参会不会发生改变
以数组名传递的实参实际上就是传递的数组的地址,将数组名传过去,然后对数组进行操作肯定会对数组的内容进行改变!!
不仅仅是数组名,其他所有的以地址作为实参,都会对实参进行改变!!
这一点要注意!!
有什么不明白的可以交流下!!
c编程高手团队正在招新,有意者速速行动,一起学习,一起努力!!
C++的数组传递进函数时,明明是值传递,为什么还是会对原来的数组产生改变?
你传进去的是数组,其实数组相当于指针,数组名就是这些元素的首地址,所以相当于你传了一个指针!当然会对数组产生改变!
c语言在调用函数中改变数组,原数组改变吗
C语言不会复制整个数组,它会要求传入数组名(一个指向数组首地址的const指针),函数中对整数的改变其实就是对实际数组的改变!
C语言 为什么把数组传递到函数中去之后长度就变成了1?
c的数组不带长度信息,这个b只是个地址,也就是个int *,它值等于a的地址。
sizeof(int *) / sizeof(int),所以结果是1
要想取得数组长度是取得不了了,多带一个参数length吧
如何把数组传递进函数而不改变数组的值。
int sum(const int *aa「4」);/*形参为常量指针数组, 数组aa的每个元素都是常量指针, 不会改变实参的值*/
main(){
int num「4」「4」;
...
int s =sum(num);//将二维数组num的地址即num「0」「0」传给sum函数参数为指针数组的形参
}
数组的首地址传递给被调函数也会改变原有值吗
数组里面的值可以改变,数组指针的值不会改变。
比如
void f( int * Data )
{
Data[0] = 2; //这里会改变
Data = (int *)0x7fffffff; //这个不会改变
}
int a[11];
a[1] = 1;
a[0] = 0;
f( a );