C语言数组做形参的问题

#include<stdio.h>

void Change(char **a)
{
char *b="bca";
*a=b;
}
void main()
{
char a[]="abc";
puts(a);
Change(&a);
puts(a);
}
VS2005下编译有错误:
“Change”: 不能将参数 1 从“char (*)[4]”转换为“char **”
char (*)[4]与char**有什么不同吗?
应该则么怎么改呢?

char (*p)[n]表示p是指向含有n个元素数组的指针变量;
char **p表示p是指针变量,指向的类型是指针。

用数组名+“&”做实参倒是没用过

#include<stdio.h>

void Change(char *a)
{
char *b="bca";
a=b;
}
void main()
{char *b="bca";
char a[]="abc";
puts(a);
Change(a);
puts(a);
}
温馨提示:内容为网友见解,仅供参考
第1个回答  2010-06-14
先改
void Change(char *a)或者void Change(char a[]);
然后改
puts(a);
Change(a);
这样就可以.数组的名字就是数组的开头指针所以不需要用&来取数组a的地址.

C语言数组作为形参实参的一些疑惑?
void fun(int arr[], int n);在函数定义的时候,形参int arr[]不是表示某个元素的值,而是告诉编译器第一个参数是一个数组指针,可以接收实参传过来的数组地址。实际上以上定义等价于下面的定义。1.数组里面带元素个数:void fun(int arr[常数], int n);这里的常数可以是任意正整数,实际上编译...

c语言函数的形参与实参的问题?
首先要理解一点,数组在做参数传递的过程中会损失数组的长度信息,退化成一个指针 例如你形参写成(char s[10]),或者干脆(char s[]),函数只能接收到一个char 所以:char dp[n][m]的类型本质上是数组的指针,即char (*)[m],它是指向长度为m的char数组的指针 char **是char *的指针,指针是...

关于c语言数组的一些疑惑?
但是,数组做形参时,C语言支持中括号里面写入数字,如array[0]、array[1]或array[10]等,但它们都是一样的,作用与写成array[]完全相同。就是说,数组做形参时,你可以无视中括号内的数字(程序运行时,也不管中括号内的数字)。所以,定义函数语句:float average( float array[10])与写成:float...

C 中以数组名作为形参和以数组名加1作为形参有什么区别
在C语言中,当以数组名作为形参与以数组名加1作为形参时,它们之间存在明显区别。主要区别在于指针的灵活性与数组名的固定性。以数组名作为形参时,形参实际上是一个指向数组首元素的指针。因此,我们可以修改形参指针指向的数组内容。例如,使用`int *p; p = num;`将指针`p`指向数组`num`的首元素。

C语言中函数定义形参为数组时的问题
1.数组为参数传递的是数组首地址,而不是元素的值,而你说的a[size]仅仅是值,况且事实上也没有a[size]这个元素 2.既然是数组名的传递,当然需要由一个数组的参数来接收,int v[]”的问题是因为他是形式参数,是为了接收数组的 n的问题是因为,如果只传递了数组,但是函数并找不到数组的个数,所以需要...

c语言,有下列程序,对数组a的引用a[-1]是多少,怎么求出来的?
数组的形式作形参,其实质是指针,a[-1]就是当前之前向前移动,a[1]就是当前指针向后移动 sum(&a[2]);传递的是第三个 到了在函数sum内部, a[]={3,4,5,6,7,8,9, 10};a[-1]就是指针左移,等于2,a[1]就是4,结果是6,答案选A ...

c语言关于实参形参表示的方式的问题
1,形参前面加了void是空函数 意思是不要求返回值么?那这题不是把声明部分全部返还了么?增加void表示不用返回值,即在函数中要使用return时,不用带值。比如返回值为int型,那么要用类似return 0;,而本例直接return;即可。void inv(int x[ ],int n)中x,n都是传入参数,x是数组,所以函数内...

请问c语言中 int a[3 ] [ ] 为什么是错误的定义
你是否问哪个可以做函数形参,答案就是B了,C语言中的数组做形参只能省略第一维的,不过即使第一维的有也被忽略了:voidf(intb[][3]){}

C语言:结构体数组怎样做形参
形参要加上结构体名;与声明一个结构体数组一样 即 show(struct 结构体名 数组名[]);

c语言c++语言如何用二维数组做形参?
C\/C++中,二维数组的第一维的每一个元素都是一维数组。所以,用指向一维数组的指针或用第一维维数空缺的二维数组作为函数的形式参数都能达到目的。设处理数组为int型,举例代码如下:\/\/#include "stdafx.h"\/\/If the vc++6.0, with this line.#include "stdio.h"void myprint(int (*p)[5]){...

相似回答
大家正在搜