zoukankan      html  css  js  c++  java
  • 23. 实现 func()函数,在func()中,通过操作arr,实现修改str1到str2字符串,并打印所有字符串,考察对指针与数组与字符串的基本掌握

    //已知下面几个数组
        char str1[] = "arr1";
        char str2[] = "aarr2";
        char str3[] = "aaarr3";
        char str4[] = "aaaarr4";
        char str5[] = "aaaaarr5";
        char str6[] = "aaaaaarr6";
    
    
    
        char* a[][3] = {str1,str2,str3,
                        str4,str5,str6};
        char* b[][3] = {"aaaa1","bbbb","cccccc","ddddd","eee","fffff"};
    
        char* c[][3] = {"cc","cc","cc"};
    //现要求
    //1.自己定义一个名为arr的数组,用来存储 a,b,c三个数组的地址当其元素成员。
    //2.实现一个func()函数,此函数通过操作arr,来修改str1-str6的可修改字符串,均修改为"tt..t",并打印所有字符串(共15个小字符串)。

     答案:

     1 #include <stdio.h>
     2 //2.
     3 void func(char*(**p)[3],int arrLen,int aLen,int bLen,int cLen)
     4 {
     5     int i;//控制数组arr
     6     int jRow,jCol;//控制数组a,b,c
     7     int k;//控制str1-str6
     8 //通过p修改str1-str2 为t..tt
     9     i = 0;
    10     for(jRow = 0;jRow < aLen;jRow++)
    11     {
    12         for(jCol = 0;jCol < 3;jCol++)
    13         {
    14             for(k = 0;*(*(*(*(p+i)+jRow)+jCol)+k);k++)
    15             {
    16                 *(*(*(*(p+i)+jRow)+jCol)+k) = 't';
    17             }
    18         }
    19     }
    20 //打印所有字符串
    21     int len[3] = {aLen,bLen,cLen};
    22 
    23     for(i = 0;i < arrLen;i++)
    24     {
    25         for(jRow = 0;jRow<len[i];jRow++)
    26         {
    27             for(jCol = 0;jCol <3;jCol++)//*(*(p+i)+jRow)+jCol
    28             {
    29                  printf("%s ", *(*(*(p+i)+jRow)+jCol));
    30             }
    31         }
    32         putchar(10);
    33     }
    34 }
    35 
    36 
    37 int main(void)
    38 {
    39 
    40     char str1[] = "arr1";
    41     char str2[] = "aarr2";
    42     char str3[] = "aaarr3";
    43     char str4[] = "aaaarr4";
    44     char str5[] = "aaaaarr5";
    45     char str6[] = "aaaaaarr6";
    46 
    47 
    48 
    49     char* a[][3] = {str1,str2,str3,
    50                     str4,str5,str6};
    51     char* b[][3] = {"b1","bb2","bbb3","bbbb4","bbbbb5","bbbbbb6","bbbbbbb7","bbbbbbbb8","bbbbbbbbb9"};
    52 
    53     char* c[][3] = {"c","cc","ccc"};
    54 
    55     //1.自己定义一个数组arr,以及指向arr数组的指针。
    56 
    57     //推导过程:char* a[][3] -> char* (*p)[3] = a; ->char* (*arr[])[3]
    58     char* (*arr[])[3] = {a,b,c};
    59 
    60     //定义一个指向arr数组的指针的推导方式1:char* a[][3]
    61     //->char*(*p)[3] = a;
    62     //->char*(**p)[3] = &a;
    63     //->char*(**p)[3] = arr;
    64     //定义一个指向arr数组的指针的推导方式2:
    65     //char* (*arr[])[3] ->
    66     //直接将arr[]替换为*p ->char* (*(*p))[3];
    67     //char* (*(*p))[3] = arr;//用来定义func()的形参。
    68 
    69 
    70 
    71     func(arr, sizeof(arr)/sizeof(*arr), sizeof(a)/sizeof(*a), sizeof(b)/sizeof(*b), sizeof(c)/sizeof(*c));
    72 
    73     return 0;
    74 }
  • 相关阅读:
    javascript关于面向对象的总结
    实现ICollection
    sqlbishi
    什么叫IOC(编程术语
    ASP.Net绘制柱状图和曲线图示例
    Web.config配置知识
    asp.net的生成曲线图的过程简单实例
    asp.net与.net编程常用函数与方法汇总
    C# 值类型与类的不同
    一步一步学Linq to sql(一):预备知识
  • 原文地址:https://www.cnblogs.com/ZhuLuoJiGongYuan/p/9470765.html
Copyright © 2011-2022 走看看