暑期实训-7月12日记录

学习任务

1.函数和指针

2.指针数组

3.数组指针

4.指向指针的指针

5.main函数

完成情况
学习了有关指针与数组、函数之间的相互关系,进一步理解了指针的运用。
问题汇总
不能完全弄懂指针变量的各种运用,尤其是二维数组和指针的运用不太了解。程序运行出错。
未解决问题
命令行参数具体原理
开发收获

1.二维数组中,&a[i]或a+i指向行,而a[i]或*(a+i)指向列,他们含义不同;

2.不要把&a[i]简单的理解为a[i]的物理地址,实际上并不存在a[i]这个变量,它只是一种地址的计算方法,得到第i行的地址;

3. Int(*p)()是一个变量说明,即p是一个指向函数入口的指针变量;

扫描二维码关注公众号,回复: 2255757 查看本文章

4.Int*p()则不是变量说明而是函数说明,说明p是一个指针型函数;

5.对于指针型函数定义,int*p()只是函数头部分,一般还应该有函数体部分。

自我评价
许多内容没有听懂,对于指针数组和数指针的运用亟需加强。
任务一:用命令行修改冒泡排序代码

#include <stdio.h>

void sort(int *a[],int argc)
{
    int i, j, tmp;
    for (i = 0; i < argc - 1; i++)
    {
        for (j = 0; j < argc - i - 1; j++)
        {
            if (a[j] < a[j + 1])
                {
                    tmp = a[j];
                    a[j] = a[j + 1];
                    a[j + 1] = tmp;
                }
        }
    }
}

void print(int *a[],int argc)
{
    int i;
    for (i = 1; i < argc; i++)
    {
        printf("%d ", a[i]);
    }
    printf("\n");
}

int main(int argc, int *argv[i])
{
    sort(argv,argc);
    print(argv,argc);

    while (1);

    return 0;
}

任务二:利用命令行参数修改字符串排序代码

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


#define SIZE 3

void sort(char *string[],int length)
{
    int i,j;
    char *t;
    for(j=0;j<length-1;j++)
    {
        for(i=0;i<length-j-1;i++)
            {
                if(strcmp(string[i],string[i+1])>0)
                {
                    t=string[i];
                    string[i]=string[i+1];
                    string[i+1]=t;
                }
            }
    }
}

int main(int argc, char *argv[])
{
    int i;
    sort(argv,argc-1);
    printf("The string after sort:\n");
    for(i=1;i<argc;i++)
    {
        printf("%s ",argv[i]);
    }

    while(1);

    return 0;
}

猜你喜欢

转载自blog.csdn.net/jsxyma/article/details/81023599