一维数组的元素作为函数实参,与同类型的简单变量作为实参一样,是单向的值传递,即数组元素的值传给形参,从而形参是改变不影响实参
数组名代表着整个数组的地址,如果一维数组的名字作为函数实参,传递的是整个数组,即形参数组和实参数组完全相同,是存放在同一存储空间的同一个数组.这样形参数组
修改时,实参数组也同时被修改了.形参数组的元素个数可以省略.
#includestdio.h
//数组作为函数参数,可以省略元素个数
//数组作为函数参数,传递是整个数组的地址,修改了函数形参数组元素的值,会影响到外面的实参数组
void change(int array[])
{
printf("array ==%p\n",array);
array[0] = 100;
}
int main()
printf("array ==%p\n",ages);
change(ages);
printf("%d\n",ages[0]);
return 0;
①.00
C和C++都没有办法传数组,只能传"指针",指针和数组的差别就在于函数内无法检测数组的尺寸
数组只能通过指针传递,不能通过值传递.
数组参数属于指针参数,指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数的值, 这是唯一的途径.
如果把数组当作参数, 不管愿意与否, 它就是指针, 指向第一个值的指针.
① 数组参数就是指向第一个元素的指针: #include stdio.h
void getArr(int p[], int si);
int main(void)
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
void getArr(int p[], int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
void getArr(int *p, int si);
void getArr(int *p, int si) {
size_t i;
for (i = 0; i sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
p[i]++;
void getArr(char p[]);
char ns[] = "ABCDEFG";
getArr(ns);
void getArr(char p[]) {
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
数组名就是指针,例如:
#include stdio.h
void?pr(char *p)
printf(p);
void main(void)
char s[] = "abc";
pr(s);
扩展资料:
注意事项
非数组类的声明尽量以指针的方式进行比较好.倘若一个指针指向的内存并不是一个数组,那么采用数组名的声明方式或许就会给人产生错误的引导.类似的,如果指向的是一个数组区域,则会给人以更加丰富的信息.例如:
int main(int argc,char* argv[])
/* code here */
与
int main(int argc,char** argv)
两种方式完全等价,但是前面一种能够更清晰地看出:这个参数是指向某个元素起始地址的指针,而后面的这种方式则不能够直观地看出这种含义.
c语言中、数组在函数中的传递可以数组元素的传递!还有就是数组名的传递!其实、数组名的传递类似指针!就是把数组的元素的首地址传到形参的!
例:
void?fact(int?*p,?int?n)
for(i?=?0;?i?n;?++i)
printf("%d?",?p?+?i);
printf("\n");
int?main()
printf("%d?",?a[i]);
return?0;
以上就是土嘎嘎小编为大家整理的c语言中向函数串数组相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!