c语言数组函数的地址 C语言函数地址

关于C语言数组的地址

数组名就是数组的首地址啊。

成都创新互联服务项目包括张掖网站建设、张掖网站制作、张掖网页制作以及张掖网络营销策划等。多年来,我们专注于互联网行业,利用自身积累的技术优势、行业经验、深度合作伙伴关系等,向广大中小型企业、政府机构等提供互联网行业的解决方案,张掖网站推广取得了明显的社会效益与经济效益。目前,我们服务的客户以成都为中心已经辐射到张掖省份的部分城市,未来相信会继续扩大服务区域并继续获得客户的支持与信任!

直接使用swaps(a,b)就可以

不过其实你子函数就写错了,根本就不是你所说的用数组地址做形参。而是要求用一个 二维数组或者是指针数组作为实参。

正确的代码如下

#includestring.h

#includestdio.h

char d[100];

void swaps(char *p,char *q)

{

if(strcmp(p,q)0)

{

strcpy(d,p);

strcpy(p,q);

strcpy(q,d);

}

}

int main()

{

char a[]="",b[]="",c[]="";

printf("请输入三个字符串,每输入一个字符串按回车确认\n");

gets(a);

gets(b);

gets(c);

swaps(a,b);

return 0;

}

void swaps(char *p,char *q)就是要求传一个地址(指针),而如果你使用

void swaps(char *p[],char *q[])则意义就不对了,而是要求一个指针数组

C语言数组的地址

其实你这个疑问是概念上的混淆,或者说对指针了解上上的欠缺

首先讲int a[3] = {2,3,4};

这里的a是这个数组的首地址,比如定义如:int *p = a;这时如果你进行如下操作:

p++;

printf("%d\n",*p);

结果会是输出2,也就是说p+1相当于数组索引加1,但是像你所问的为什么a和a是相同的 ,首先要知道他们分别代表什么意思,a:像上面所说的是数组的首地址,做自加运算会根据数组类型来计算偏移量,那么a是什么东西呢,实际上它也是一个指针,是指向一个具有3个元素的数组的指针,如何理解,看以下定义:

如果你定义int *q = a;这时编译器肯定报错,绘制出数据类型不一致,那么你这样样定义就没有问题:int (*q)[3] = a;这时如果你再对q进行++操作,那么加的就不同了,如相面的p++操作后p的值会加4,而这里q++操作后的值会加12,也就是跳过3个数组元素,然而,确实这两个指针的初始值是一样的,只是类型不一样而已,这对二维数组的访问时很方便的,这个你可以参照2维数组得到进一步理解,讲的有点乱,不知道你能不能理解

C语言中数组地址的表示方法

数组地址:比如说uint a[10]

那么他的地址可以表示为:a,a[0]两种表示方式,但他们+1时的直是不同的


网站名称:c语言数组函数的地址 C语言函数地址
转载注明:http://scyanting.com/article/dooocci.html