叶圣民//2018.07.20.//数组与指针在函数间传参的使用

学习日志        姓名:叶圣民   日期:2018.07.20.

 

 

 

 

今日学习任务

 

1、熟练掌握数组的使用;(1-3 数组名的作用,数组的使用)

2、熟练特殊数组的使用;(指针数组、函数指针数组等)

3、熟练掌握右左法则的使用;复杂定义声明解释

日任务完成情况

 

(详细说明本日任务是否按计划完成,开发的代码量)

数组的分类:一维数组,二维数组,三维数组

按元素的分类:(内置类型)数组、指针数组

int main (int argc,char *argv[])

argc:命令行参数个数

atgv:命令行参数保存为字符型

 

 

 

1、一维数组传参时子函数用一维数组名(一维数组首个元素的地址接)

2、二维数组传参时子函数用(*ptr)[j](二维数组首个一维数组的地址)

3、三维数组传参时子函数用(*ptr)[i][j](三维数组的首个二维数组的地址)

 

 

日开发中出现的问题汇总

 

数组的传参和数组具体的实现以及数组与指针的转化关系不太能搞懂。

 

日未解决问题

 

日开发收获

学会了子函数与主函数间数组的传参;

数组与指针之间的具体关系;

 

 

#include <stdio.h>

void printf_a(int *a)
{
    int i = 0;

    for(i = 0;i < 2;i++)
    {
        printf("a[%d] = %d\n",i,*(a + i));
    }
}

void printf_aa(int (*aa)[2])
{
    int i = 0;
    int j = 0;

    for(i = 0;i < 2;i++)
    {
        for(j = 0;j < 2;j++)
	{
	    printf("aa[%d][%d] = %d\n",i,j,aa[i][j]);
	}
    }
}

void printf_aaa(int (*aaa)[2][2])
{
    int i;
    int j;
    int k;

    for(i = 0;i < 2;i++)
    {
        for(j = 0;j < 2;j++)
	{
	    for(k = 0;k < 2;k++)
	    {
	        printf("a[%d][%d][%d] = %d\n",i,j,k,aaa[i][j][k]);
	    }
	}
    }
}

int main()
{
    int a[2] = {1,2};
    int aa[2][2]  = {1,2,3,4};
    int aaa[2][2][2] = {{1,2,3,4},{5,6,7,8}};
    

    printf_a(a);
    printf_aa(aa);
    printf_aaa(aaa);
    return 0;
}



 

#include <stdio.h>

#define MAX 100

void printf_str(char *str)
{
    printf("str[MAX] = %s\n",str);
}


void printf_ptr(char (*ptr)[3])
{
    int i = 0;
    for(i = 0;i < 3;i++)
    {
        printf("ptr[%d][100] = %s\n",i,ptr[i]);
    }
}



int main()
{
    int i;
    char str[MAX];
    char ptr[3][MAX];

    scanf("%[^\n]",str);
    printf("str = %s\n",str);
#if 0
    for(i = 0;i < 3;i++)
    {
        scanf("%s",ptr[i]);
	printf("ptr[%d] = %s\n",i,*(ptr + i));
    }
    //printf_str(str);
#endif
    printf_ptr(ptr);

    //printf("%s\n",str);

    return 0;
}

 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void print_pa(int **pa)
{
    int i;

    for(i = 0;i < 3;i++)
    {
	pa[i] = (int *)malloc(sizeof(int) * 100);
        scanf("%d",pa[i]);
	printf("pa[%d] = %d\n",i,*pa[i]);
    }
}



int main()
{
    int a[3];
    int *pa[3];
    int i;

    int num1 = 1;
    int num2 = 2;
    int num3 = 3;

    //pa[0] = &num1;
    //pa[1] = &num2;
    //pa[2] = &num3;
    #if 0
    for(i = 0;i < 3;i++)
    {
	pa[i] = (int *)malloc(sizeof(int) * 100);
        scanf("%d",pa[i]);
	printf("pa[%d] = %d\n",i,*pa[i]);
    }
    #endif

    print_pa(pa);

    return 0;
}


 

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main(int argc,char *argv[])
{
    int i;
    if(argc != 4)
    {
        printf("input error!\n");
    }
    else
    {
        for(i = 1; i < argc;i++)
	{
            printf("argv[%d] = %d\n",i - 1,atoi(argv[i]));
	}
    }
    
    
    return 0;
}


 

 

 

1024

猜你喜欢

转载自blog.csdn.net/qq_31421117/article/details/81137107