zoukankan      html  css  js  c++  java
  • 0032 字符串指针

    /*
     
        字符串指针:
     
           定义: char *字符串指针变量名 = "字符串内容";
     
           用作:用来保存一个字符串
     
     
     
     
     
     
     */
    
    
    #include <stdio.h>
    #include <string.h>
    #include <stdlib.h>
    
    int main(int argc, const char * argv[]) {
       
        //"zfbanzhang zaiyiqi" 这个字符串存储在常量去
        //str 只保存了字符串常量的首地址
        char *str = "zfbanzhang zaiyiqi";
        //指针变量都是占用8个字节
        printf("sizeof(str) = %ld
    ",sizeof(str));
        printf("str len = %ld
    ",strlen(str));
        
        //str是指针变量
        //str重新指向另外一个字符串常量 "I LOVE YOU"
        //保存的是 "I LOVE YOU" 字符串常量的首地址
        str = "I LOVE YOU";
        printf("%s
    ",str);
        
        char ch[]="abc";  //存在栈区
        ch[2]='Z';
        printf("%s
    ",ch);
        
        //读取字符串常量的某个字符
        printf("%c
    ",*(str+2));  //L
        for (int i=0; i<strlen(str); i++) {
            printf("%c	",*(str+i));
        }
        
        //
        //*(str+2)='X';  错误的,因为字符串常量是在常量区存储
        //在常量区保存的数据都是只读的
        
        //str2 没有赋初值,野指针
        char *str2=NULL;
        //这句话的作用给先申请了100个字节的内存 str2
        str2 = malloc(100);
        
        
        printf("=======%s
    ",str2);
        
        //另外一种解决方案
        char ch3[100];
        char *str3=ch3;
        scanf("%s",str3);
        printf("----->%s
    ",str3);
        
        return 0;
    }
    
    /*
     
        一维字符数组
     
           char  ch[10]={'a','b'};
     
           char ch1[]="abc";
     
     
        二维字符数组
     
           char ch2[3][10]={{'a','b'},{'b'},{'c'}};
     
        用二维数组来保存多个字符串
     
           //用二维的字符数组可以存储多个字符串
           //第一维存的是每个字符串的首地址
           //每个字符串的长度,不能超过第二维长度
           char ch3[3][5]={"abc","def","kkkk"}
      
     
               a  b  c    
               d  e  f    
               k  k  k  k   
     
     
               ch[1][3] = 'Z';
     
    
    
    
    
     */
    
    
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
        
        char ch3[3][5]={"abc","def","kkkk"};
        //存放的是一个二维数组
        ch3[1][3] = 'Z';
        
        for (int i=0; i<3; i++) {
            printf("%s
    ",ch3[i]);
        }
        
        return 0;
    }
    
    //
    //  main.c
    //  18、char型指针数组和字符数组区别
    //
    //  Created by apple on 15/1/8.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    
    int main(int argc, const char * argv[]) {
       
        //char 类型的指针数组
        char *name[3]={"abcdasfadsfasdfasdfasdf","def","kkk"};
        
        for (int i=0; i<3; i++) {
            //name[i]
            printf("%s
    ",*(name+i));
        }
        
        //字符串指针和字符数组的区别
        
        //字符串指针:
                          char *ss = "abc";
        
        //指向可以改变
        //ss是一个指针变量
                          ss = "helloWorld!";
        
        //字符数组:
        
                          char s1[]="abc";
        //s1是数组名,是一个常量,不能被复制
                          //s1 = "helloworld!";
        
        return 0;
    }
    
    //
    //  main.c
    //  19-应用:字符串排序
    //
    //  Created by apple on 15/1/8.
    //  Copyright (c) 2015年 itcast. All rights reserved.
    //
    
    #include <stdio.h>
    #include <string.h>
    
    /**
     *  实现字符串的排序
     *
     *  @param arr <#arr description#>
     *  @param len <#len description#>
     */
    void sortString(char *arr[],int len){
    
         //冒泡排序
         //临时存放地址
        char *temp;
        for (int i=0; i<len-1; i++) {
            for (int j=0; j<len-i-1; j++) {
                
                //arr[j]  arr[j+1]
                //比较字符串大小
                if (strcmp(arr[j], arr[j+1])>0) {
                    //实现arr[j]  arr[j+1]交换
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                    
                }
                
            }
        }
        
    
    }
    
    int main(int argc, const char * argv[]) {
        
        //输入5个国名并按字母顺序排列后输出。
        char *name[]={ "CHINA","AMERICA","AUSTRALIA","FRANCE","GERMAN"};
        
        for (int i=0; i<5; i++) {
            printf("%s
    ",name[i]);
        }
        
        //字符串排序
        sortString(name, 5);
        
        printf("
    
    ");
        for (int i=0; i<5; i++) {
            printf("%s
    ",name[i]);
        }
        
        
        
        int a[2][3]={1,2,3,4,5,6};
        //p->0x01 1
        //   0x02 2
        //   0x03 3
        //   0x04 4
        // a = &a[0] = &a[0][0]
    
        
        return 0;
    }
    
  • 相关阅读:
    update mysql row (You can't specify target table 'x' for update in FROM clause)
    MySQL中使用group by 是总是出现1055的错误
    centos7下查看mysql配置文件适用顺序
    mysql中EXPLAIN 的作用
    查看mysql库大小,表大小,索引大小
    mysql互换表中两列数据方法
    mysql在建表语句中添加索引
    使用vue-lazyload实现图片懒加载
    vue使用jsonp获取数据,开发热卖推荐组件
    vue实现首页导航面板组件
  • 原文地址:https://www.cnblogs.com/aiti/p/4653645.html
Copyright © 2011-2022 走看看