zoukankan      html  css  js  c++  java
  • 指针高级

    //
    //  main.c
    //  指针高级
    //
    //  Created by zhangxueming on 15/6/4.
    //  Copyright (c) 2015年 zhangxueming. All rights reserved.
    //
    
    #include <stdio.h>
    //指针的数组(指针数组)
    //本质是数组, 数组中的每一个元素都是指针变量
    //int *p[10];
    //p[0]~p[9] 都是一个 int *指针变量
    
    //定义一个一维字符指针数组,并利用不定数量(不多于10)个字符串将其初始化,然后将各字符串输出。
    //比如:
    //输入
    //asdfw uuio fff tyu
    //
    //输出为
    //tyu
    //fff
    //uuio
    //asdfw
    
    //str[0]
    //char str[10][100]--> char [100] --> char *
    
    //在内存栽中操作
    //int main(int argc, const char * argv[]) {
    //    char *ps[10]={NULL};
    //    char str[10][100]={};//str[0]   &str[0][0]  char *
    //    int cnt=0;
    //    for (int i=0; i<10; i++) {
    //        ps[i]= str[i];
    //        scanf("%s",ps[i]);
    //        cnt++;
    //        if (getchar()=='
    ') {
    //            break;
    //        }
    //    }
    //    for (int i=0; i<cnt; i++) {
    //        printf("%s
    ", ps[i]);
    //    }
    //    return 0;
    //}
    #include <stdlib.h>
    //在内存堆中操作
    //int main(int argc,const char *argv[])
    //{
    //    char *ps[10]={NULL};
    //    int cnt=0;
    //    for (int i=0; i<10; i++) {
    //        ps[i]=(char *)malloc(100*sizeof(char));
    //        if (!ps[i]) {
    //            return -1;
    //        }
    //        scanf("%s", ps[i]);
    //        cnt ++;
    //        if (getchar()=='
    ') {
    //            break;
    //        }
    //    }
    //    for (int i=0; i<cnt; i++) {
    //        printf("%s
    ", ps[i]);
    //        free(ps[i]);
    //        ps[i]=NULL;
    //    }
    //    return 0;
    //}
    
    //利用指针数组求二维数组元素的和
    
    //int sum(int *p[], int len1, int len2)   // 形参 int *p[] ==int **p
    //{
    //    int sum=0;
    //    for (int i=0; i<len1; i++) {
    //        for (int j=0; j<len2; j++) {
    //            //sum+=p[i][j];// p[i][j] --> *((*(p+i))+j)
    //            //sum+=(*(p+i))[j];
    //            sum += *((*(p+i))+j);
    //        }
    //    }
    //    return sum;
    //}
    //
    //int main(int argc,const char *argv[])
    //{
    //    int a[3][2]={1,2,3,4,5,6};
    //    
    //    int *p[3]={NULL};
    //    for (int i=0; i<3; i++) {
    //        p[i]=a[i];
    //    }
    //    printf("sum = %d
    ", sum(p,3,2));
    //    
    //    return 0;
    //}
    
    
    //数组的指针(数组指针)
    //数组类型的指针,本质是指针变量,数据类型是数组类型的
    //int (*p)[3]; --> int (*)[3]   int [3]
    //p是一个向有三个元素的一维数组的指针
    
    //&a[0]
    //int a[5][4]<==> int (*&a[5])[4] --> int (*)[4]
    
    //a[0]
    //int a[5][4]--> int a[0][4] --> int [4] --> int *
    
    //a
    //int a[5][4] --> int [5][4] --> int (*)[4]
    
    //&a
    //int a[5][4] <==> int (*&a)[5][4] --> int (*)[5][4]
    
    //&a[0][0]  --> int *
    
    
    //int main(int argc,const char *argv[])
    //{
    //    //printf("size = %ld
    ", sizeof(int [5]));
    //    
    //    int a[5][4]={};
    //    int (*p)[4]=a;//int (*)[4]  int *
    //    
    //    printf("%p
    ",p);
    //    p++;
    //    printf("%p
    ",p);
    //    p++;
    //    printf("%p
    ",p);
    //    
    //    return 0;
    //}
    //传递一维数组的指针
    int sum1(int(*p)[2], int len)// *(int (*p)[2]) --> int [2]
    {
        int sum=0;
        for (int i=0; i<len; i++) {
            for (int j=0; j<2; j++) {
                //sum+=p[i][j];
                //sum+= (*(p+i))[j];
                sum+=*(*(p+i)+j);
            }
        }
        return sum;
    }
    //传递二维数组的指针
    int sum2(int (*p)[3][2])//*p  int [3][2] --> int (*)[2]
    {
        int sum=0;
        for (int i=0; i<3; i++) {
            for (int j=0; j<2; j++) {
                //sum+= (*p)[i][j];
                sum+= *(*(*p+i)+j);
            }
        }
        return sum;
    }
    int main(int argc, const char *argv[])
    {
        int a[3][2]={1,2,3,4,5,6};
        //printf("sum = %d
    ", sum1(a,3));
        printf("sum = %d
    ", sum2(&a));
        
        return 0;
    }
  • 相关阅读:
    Sketch Missing Fonts 页面样式混乱研究
    SFDC_01(google map)
    SFDC_02(google map)
    SFDC_04(system.debug();)
    umbraco简体中文语言包for4.5及以下版本
    7.22武汉日全食自拍留念
    IIS7(windows 2008)恐怖问题,大家谨慎,血的教训啊~~~~
    【视频】自己录制的Umbraco入门3——如何构建网站导航,推荐给玩CMS的朋友
    分享,个人代码知识管理程序
    【视频】自己录制的Umbraco入门2如果构建网页,推荐给玩CMS的朋友
  • 原文地址:https://www.cnblogs.com/0515offer/p/4551411.html
Copyright © 2011-2022 走看看