zoukankan      html  css  js  c++  java
  • c语言学习笔记

    前面学习了字符串是一种字符数组,又知道了指针变量和数组的关系,这里来看一下指针和字符串的关系。

    #include <stdio.h>

    int main(void){

      char str = "hello";

      char *ptr = "abcd";  // 这里定义ptr为 char类型的指针, ptr的地址会指向这个字符串的首个字符, 。

      int i;

      for(i=0;i<4;i++){            // 

        printf("%c",ptr[i]);   // 或 *(p+i)

      }

      

      printf("%s",ptr);

      

      return 0;

    }

    //再看一个例子,用指针来计算一个字符串的长度

    #include <stdio.h>

    //用指针求字符串长度

    size_t str_len(const char *p){ //这里的size_t 是 size type ,一种整数类型,这里直接用 int代替size_t当然也许,但是用这样一种特殊的int会使代码更好阅读,因为既知道了数据类型又知道了数据的作用
                    //这里要注意,函数通过指针进行操作时,应该避免该函数对指向空间的非必要操作,适当的加上 const,程序不是仅仅实现了功能就行了       

      size_t i=0;
      while(*p++)
        i++;

      return size_t;
    }


    int main(void){

      char str1[]="hello world";
      int len=0;

      len=str_len(str1);//前面看到这个str_len函数的形参是 char *p ,这里传递的实参是 str1, 说明这种指针参数传递会有一个转换过程,这里是把str1的首字符的地址传了进来
      printf("%d",len);

      return 0;
    }

    //用指针实现字符串的复制

    #include <stdio.h>

    char str_copy(char *p,const char *d){

      while(*p++=*d++) //这种写法会先赋值后再自增,

        ;  

    }

    int main(void){

      char str1[]="hello";

      char str2[]="world";  //如果不指明下标,编译的时候会根据字符数分配空间

                

      str_copy(str1,str2);

      printf("%s",str1);   //str1会变成world,表面上看对了,但还是有疑问,由于前面定义字符串赋值没有给下标,当str2的字符数多于str1的字符数,用这种指针操作可能在str1原来的内存空间范围外赋值,可能会覆盖其他的数据

      return 0;

    }

    很多函数其实已经封装好了,可以拿来直接用

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


    //常用字符串 函数
    int main(void){
    char str1[]="hello";
    char str2[]="world";
    char str3[]="goodidea";

    printf("%d",strlen(str1));  // strlen 求字符串长度


    strcpy(str1,str2);
    printf("%s ",strcpy(str1,str2)); //strcpy 把一个字符串接到另一个字符串后面

    printf("%s ",strncpy(str1,str3,2)); //strncpy 同上,从n位开始操作

    char str5[]="ni ";
    char str6[]="hao";

    printf("%s ", strcat(str5,str6)) ;

    char str7[]="123";
    printf("%d ", atoi(str7)) ;  // alphanumeric to integer

    char str8[]="123";
    printf("%d ", atol(str8)) ;  //alphanumeric to long

    char str9[]="12.31";
    printf("%d ", atof(str9)) ; //alphanumeric to float


    return 0;
    }

  • 相关阅读:
    开始制作国产的 scratch
    七个对我最重要的职业建议(译文)
    不要在功能上竞争
    来看看机智的前端童鞋怎么防盗
    悬疑塑成天才?
    Linux常用命令之重启关机命令
    Linux常用命令之网络命令
    Linux常用命令之文件搜索命令
    Linux常见命令之权限管理命令
    Linux常见命令之文件处理命令
  • 原文地址:https://www.cnblogs.com/luckylihuizhou/p/6438193.html
Copyright © 2011-2022 走看看