C数组传值的问题

/* Note:Your choice is C IDE */
#include <stdio.h>
void b(char c[])
{
c[0]='a';
c[1]='b';
}
void main()
{
char a[2];
b(a);
printf("%s",a);
}

为什么用一个数组变量传给另一个过程的数组变量。main函数里面的数组变量的值会改变。我用的是按值传递??
那么这个程序怎样改才算是传值呢?
很简单 因为数组自动转化逗橘侍为指针了。。。。。。。

传递数组的山吵时候 是无法传值伍配的 简单的说 数组是无法复制的,只有复制它的首指针 或者是对它的元素依次复制
由于当c语言调用的时候,实际传给b函数的是数组a的地址(也就是a的指针),所以数组会被修改。
C函数参高历数本身就是传值的,参数中的指针也是值传递

C++中的引用才是真正的传址

void b(char c[])
{
c[0]='a';/* 这里c是一个局部变斗轿量,它空念肆是一个指针值,属于值传递 */
c[1]='b';
}
你用的不是传值,因为你传的是a数组的地址.是地址不是传值.
你传的不是值