叶圣民//2018.07.18.//C语言指针数组的练习

 

 

今日学习任务

 

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

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

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

日任务完成情况

 

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

  • 函数调用过程:
  1. 函数名也是一个指针常量(保存函数的入口地址)

   通过函数名找到函数的入口地址

  1. 给形参分配空间
  2. 传参(传值和传地址)
  3. 执行函数体的语句
  4. 返回
  5. 释放空间
  6. 传入参数和传出参数
  • 传值:当只使用不修改参数变量的值;传是参变量名

    传地址:当修改了实参变量值时;传实参变量对应的地址空间

三、数组

  1. 遍历数组
  2. 数组名的作用
  3. 数组指针变量的使用及作用
  4. 指针数组的用法
  5. 一维数组、二维组数、三维数组

 

日开发中出现的问题汇总

 

对数组的对应内存空间和对空内存空间的地址关系,在多维数字中不易理解

 

 

自我评

 

(是否按开发规范完成既定任务,需要改进的地方,与他人合作效果等)

 

 

了解了函数的使用方法;如何使子函数返回多个值。

自编 strlen();strcopy();strncopy();strcat;strncat;strcmp和cstrncmp函数

 

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


int my_strcmp(char *s1,char *s2)
{
    int ret = 0;
    while((*s1 != '\0') && (*s2 != '\0'))
    {
        while((*s1 == *s2))
        {
	    s1++;
	    s2++;
            if((*s1 == '\0') || (*s2 == '\0'))
	    {
	    return 0;
	    }
	}
	if(*s1 > *s2)
	{
	    return 1;
	}
	if(*s1 < *s2)
	{
	    return -1;
	}
    }
}




int main()
{
    char *str = "hellz";
    char *ptr = "hello world";

    int result = my_strcmp(str,ptr);

    printf("result = %d\n",result);
    
    
    return 0;
}


 

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

#define MAX_LEN sizeof(char)*100

#if 0
char * my_strcopy(char *ptr,char *str)
{
    char * s_tmp = str;
    char * p_tmp = ptr;

    while(*p_tmp != '\0')
    {
         *s_tmp = *p_tmp;
	 p_tmp++;
	 s_tmp++;
    }
    s_tmp = '\0';
    return str;
    
}



char * my_strncopy(char *ptr,char *str,int n)
{
    int i;
    char * s_tmp = str;
    char * p_tmp = ptr;

    for(i = 0;i < n;i++)
    {
        *(s_tmp + i) = *(p_tmp + i);
    }
    *(s_tmp + i) = '\0';

    return str;
    
}
#endif

char * my_strcat(char *ptr1,char *ptr2)
{
    char * cat = (char *)malloc(MAX_LEN);

    //char *cat_tmp = cat;
    //char * ptr1_tmp = ptr1;
    
    int len1 = 0;
    int len2 = 0;

    while(*ptr1 != '\0')
    {
        *cat = *ptr1;
	cat++;
	ptr1++;
	len1++;
    }
    while(*ptr2 != '\0')
    {
        *cat = *ptr2;
	cat++;
	ptr2++;
	len2++;
    }
    *cat = '\0';
    cat = cat - len1 -len2;
    return cat;
}

char * my_strncat(char *ptr1,char *ptr2,int n)
{
    char * cat = (char *)malloc(MAX_LEN);

    //char *cat_tmp = cat;
    //char * ptr1_tmp = ptr1;
    int i;
    int len1 = 0;

    while(*ptr1 != '\0')
    {
        *cat = *ptr1;
	cat++;
	ptr1++;
	len1++;
    }
    for(i = 0;i < n;i++)
    {
        *cat = *ptr2;
	cat++;
	ptr2++;
    }
    *cat = '\0';
    cat = cat - len1 -n;
    return cat;
}

int main()
{
    int n = 3;
    char * ptr1 = (char *)malloc(MAX_LEN);
    char * ptr2 = (char *)malloc(MAX_LEN);
    char * str = (char *)malloc(MAX_LEN);
    
    ptr1 = "hello";
    ptr2 = "world";


    //printf("strncopy = %s\n",my_strncopy(ptr1,ptr2,n));

    //printf("str = %s\n",my_strcopy(ptr1,str));
    
    printf("strcat = %s\n",my_strcat(ptr1,ptr2));
    printf("strncat = %s\n",my_strncat(ptr1,ptr2,n));

    return 0;
}






 

#include <stdio.h>

//typedef signed int Int;

void exchange(int *number1,int *number2)
{
    int *number;

    *number1 = (*number1) ^ (*number2);
    *number2 = (*number1) ^ (*number2);
    *number1 = (*number1) ^ (*number2);
}



int main()
{
    int number1;
    int number2;

    printf("输入两个数交换数值\n");

    printf("请输入数值 1 :");
    scanf("%d",&number1);

    printf("请输入数值 2:");
    scanf("%d",&number2);

    exchange(&number1,&number2);

    printf("number1 = %d\n",number1);
    printf("number2 = %d\n",number2);


    return 0;
}

 

 

11

猜你喜欢

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