[]数组_函数调用数组 、指针数组、结构体数组

来源:互联网 发布:新媒体网络部面试问题 编辑:程序博客网 时间:2024/05/17 21:43
话不多说,上代码


函数调用数组 (数组*函数)

#include<stdio.h>void main(){void f1(int a);//【声明void f2(int x[]);int a[10] = { 0,1,2,3,4,5,6,7,8,9 };f1(a[9]);//函数【调用数组元素f2(a);//函数【调用数组(数组名存的就是数组首地址)}void f1(int a)//就像调用一个变量一样【数组元素在此就是单个变量{printf("%d\n", a);}void f2(int x[])//调用一个地址(所以函数内对数组做的改变全是真实改动){printf("%d\n", x[9]);}
请注意其对应的:声明、定义、调用。的区别!
调用数组只需传入数组名(数组首地址)即可。
而调用数组元素则是采用"值传递"那样的方式,就像调用一个不是数组的变量一样。

声明、定义 中做参数【都是函数首部】

void f2(int x[]);//声明
void f2(int x[])//定义{printf("%d\n", x[9]);}

调用 中做参数【直接是数组名(首地址)】

f2(a);//调用(a是数组a[100]的数组名)


指针数组(数组*指针)

#include<stdio.h>void main(){int i = 0;char *p[4];//int (*p)[4]则是指向一维数组的指针变量p[0] = "hello";//指针能直接指向字符串并且赋值,比字符数组好用多了(这首指针p[0],是一个指针变量)p[1] = "world";p[2] = "!";p[3] = "\1";while(p[i]!="\1")//字符串就是地址?详见另一文章{printf("%s\n",p[i]);//此处记住,输出的参数是字符串的地址i++;}}


结构体数组(数组*结构体)

#include<stdio.h>#include<string.h>struct Man {int num;char name[20];}Student[3];void main(){for (int i = 0; i < 3; i++){Student[i].num = i;strcpy(Student[i].name, "zhang");//还不能直接用等号= =。。。printf("学生%d %s\n", Student[i].num , Student[i].name);}}





0 0
原创粉丝点击