<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