C 语言学习 指针数组作函数参数

 <iframe src="https://tool.lu/coderunner/embed/6nf.html" width="650" height="550" frameborder="0" mozallowfullscreen webkitallowfullscreen allowfullscreen></iframe>

/* 
 * int main(int argc , char *argv[])
 * 这是一盒典型的数组名(或者说是指针数组)做函数参数的例子,而且还是没有指定大小的形参数组。
 * 有时为了再被调用函数中处理数组元素的需要,可以另设一个形参,传递需要处理的数组元素的个数
 * 而且用数组名做函数实参时,不是把数组元素的值传递给形参,而是把实参数组的首元素地址传递给形参数组
 * 这样两个数组就共同占用通一内存单元。和变量作函数参数的作用不一样。
 * 
 * 1.当char[]作为函数的参数时,表示char*.当作为函数的参数传入时,实际上是拷贝了数组的第一个元素
 * 的地址。所以void fun(char str[])等同于 void fun(char *str)
 * 
 * 2.char *str 和 char str[]异同:
 * same : str都是指针,指向char类型
 * different : char *str把指针存在stack ,把内容存在constants
 *             char str[]则把内容存在stack
 * 
 * 3.char *str[10] 和 char [10][10] 异同
 * same : str都是二级指针,*str表示1级指针,**str表示内存中存储的内容
 * different: char *str[10],数组由char*类型的指针组成
 *             char str[10][10]表示一维放10个元素,二维放10个元素,值存放的地址是一块连续的区域
 *             没有指针
 * 
 * 
 *  */



#include <stdio.h>
#include <string.h>
	
char *str[]={"I","love","china","forever"};
char *num[]={"QQ",":","120","4355","467"};
char *buffer[]={};
int fun(int temp , char *argv[])
{
	int i;
	for(i=0;i<temp;i++)
	{
		buffer[i]=argv[i];
	}
}
	
int main () {
	int j,K;
	fun(4,str);
	for(j=0;j<4;j++)
	{
		printf("%s\n" , buffer[j]);
	}
	fun(5,num);
	for(j=0;j<5;j++)
	{
		printf("%s" , buffer[j]);
	}
}






operation result :

I
love
china
forever
QQ:1204355467
sandbox> exited with status 0

 

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值