首页 > 技术文章 > 指针应用

0515offer 2015-06-03 18:48 原文

//
//  main.c
//  指针应用
//
//  Created by zhangxueming on 15/6/3.
//  Copyright (c) 2015年 zhangxueming. All rights reserved.
//

#include <stdio.h>

//指针与函数

void swap(int *a, int *b)
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

//int main(int argc, const char * argv[]) {
//    int a=10, b=20;
//    
//    swap(&a,&b);
//    
//    printf("a = %d b = %d\n", a, b);
//    return 0;
//}

//利用指针,输入10个数到数组中, 再输出

//int main(int argc,const char *argv[])
//{
//    int a[10];
//    int *p = a;
//    for (int i=0; i<10; i++) {
//        scanf("%d", p++);
//    }
//    p=a;
//    for (int i=0; i<10; i++) {
//        printf("%d ", *p);
//        p++;
//    }
//    printf("\n");
//    
//    return 0;
//}


//指针实现数组逆序
//数组作为函数的参数, 丢失一个长度
void reverseArray(int *a, int len)
{
    for (int i=0; i<len/2; i++) {
        int temp = *(a+i);
        *(a+i)=*(a+len-1-i);
        *(a+len-1-i)=temp;
    }
}
//int main(int argc,const char *argv[])
//{
//    int a[10]={1,2,3,4,5,6,7,8,9,10};
//    reverseArray(a, 10);
//    for (int i=0; i<10; i++) {
//        printf("%d ", *(a+i));
//    }
//    return 0;
//}

//int a[10]; --> int [10] --> int *

//int main(int argc,const char **argv)
//{
//    int a[10]={};//
//    int *p = a;
//    printf("%p\n", p);
//    printf("%p\n", a);
//    
//    p++;
//    printf("%p\n", p);
//    printf("%p\n", a+1);//a int *
//    
//    return 0;
//}

//练习:编写函数 replace, 在一个字符数组里面查找指定字符,并用相应的字符替代。函数原型如下:
void replace(char *array, char old, char new, int length)
{
    for (int i=0; i<length; i++) {
        if (*(array+i)==old) {
            *(array+i)=new;
        }
    }
}
//int main(int argc,const char *argv[])
//{
//    char str[5]={'a','a','b','c','a'};
//    replace(str, 'a', 'A', 5);
//    for (int i=0; i<5; i++) {
//        printf("%c ", *(str+i));
//    }
//    return 0;
//}


//练习:编写函数 insert, 向一个字符数组指定位置插入一个字符,后面的字符依次向后移动。函数原型如下:
//"helloworld"
void insert(char *array, int index, char new, int length)
{
    for (int i=length-1; i>=index; i--) {
        *(array+i+1) = *(array+i);
    }
    *(array+index) = new;
}
//int main(int argc,const char *argv[])
//{
//    char str[12]="helloworld";
//    insert(str, 5, 'A', 11);
//    printf("%s\n", str);
//    
//    return 0;
//}

//const与 指针
//只读的
//const type name
//type const name

int main(int argc,const char *argv[])
{
    //const int a=100;
    //int const b;
    //a=200;// 变量a是只读变量不能被修改
    
    
//    int a=10;
//    int b=20;
//    const int *p = &a;//*p 是只读的, p可读可写的
//    //*p =30;
//    p= &b;
    
//    int a=10;
//    const int *const p= &a;//*p p都是只读的
    
//    int a=10;
//    const int *p=&a,q=20;// *p q 是只读的 p是可读可写
    
//    const int *p, *q;// *p *q是只读的, p q是可读可写的
   
 //   const int *const p, *q;//*p p *q 是只读的, q是可读可写的
    
    const int *const p, *const q;// *p *q p q都是只读的
    
    return 0;
}

 

推荐阅读