数组的基本知识



数组的定义


  1. #define SIZE 5
  2. int array_int[5]; //未声明初始化,默认填零
  3. float array_float[5] = {1.01, 2.23, 3.10};//未声明初始化,默认填零点零...小数部分
  4. double array_double[SIZE];//未声明初始化,默认填零点零...小数部分
  5. char array_char[10];//也就是字符串
  6. char array[10] = "abcd";//未声明初始化部分默认填空
  7. struct person array_struct[10];
  8. typedef enum _bool {False, True} BOOL;
  9. BOOL array_bool[3] = {False, True, True};
  10. ...

数组的引用


  1. array_int[3] = 5;
  2. char array_char[3] = 'a';
  3. array_struct[3].age = 5;//结构体数组某个对象的引用赋值

二维数组


  1. int array[10][10] = {{1,2,3},{1,3,5}};
  2. int (*p)[10];
  3. p = &array;
  4. printf("%d\n",*(*p+1));
  5. p = &array[1];
  6. printf("%d\n",*(*p+1));
  7. //p就是array[0][0],p+1就是array[0][1],等等

补充知识点:

  1. //_Bool 占一位的布尔类型
  2. #define True 1
  3. _Bool flag = True
  4. //与数组合作操作时候指针类型的转换
  5. //类型 数组名称[数字];
  6. //类型 *指针名字;
  7. //指针 = &数组名称;
  8. //引用的时候应该是
  9. //(类型 *)(*指针名字+1)
  10. char string[10] = "abcd";
  11. char *p;
  12. p = &string;
  13. printf("%c\n", (char *)(*p+1))

字符串基础知识



定义、引用和指针相关


  1. char string[10] = "abcd";
  2. char *pstring = "abcd";
  3. /*
  4. 二者是有区别的。*pstring是一个只有四个char类型大小的内存区域,而string是一个有10个char类型大小的内存区域,在拼接字符串的时候,使用string接起来不超过10位,不报错,超过10位就会报错,后者拼接会直接报错,因为没有内存空间了。
  5. */
  6. printf("%s", string);
  7. printf("%s", *pstring);

相关函数和操作

  1. strcpy(p, p1) //复制字符串
  2. strncpy(p, p1, n) //复制指定长度字符串
  3. strcat(p, p1) //拼接字符串p1到字符串p后面
  4. strncat(p, p1, n) //拼接指定长度字符串
  5. strlen(p) //取字符串长度
  6. strcmp(p, p1) //比较字符串,一样返回0,否则不为0
  7. strcasecmp//忽略大小写比较字符串
  8. strncmp(p, p1, n) //比较指定长度字符串
  9. strchr(p, c) //在字符串中查找指定字符
  10. strrchr(p, c) //在字符串中反向查找
  11. strstr(p, p1) //查找字符串
  12. strpbrk(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素
  13. strspn(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移
  14. strcspn(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移
  15. //* 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符
  16. //使用char *为返回值的函数,其他类型类似
  17. char *result;
  18. result = function(type var1, type var2, ...);
  19. printf("%s\n", *result);

字符串与数字的转换


  1. atoi(p) //字符串转换到 int 整型
  2. itoa(int num)//int转字符串
  3. atof(p) //字符串转换到 double 符点数
  4. atol(p) //字符串转换到 long 整型

字符串判断


  1. isalpha() //检查是否为字母字符
  2. isupper() //检查是否为大写字母字符
  3. islower() //检查是否为小写字母字符
  4. isdigit() //检查是否为数字
  5. isxdigit() //检查是否为十六进制数字表示的有效字符
  6. isspace() //检查是否为空格类型字符
  7. iscntrl() //检查是否为控制字符
  8. ispunct() //检查是否为标点符号
  9. isalnum() //检查是否为字母和数字
  10. isprint() //检查是否是可打印字符
  11. isgraph() //检查是否是图形字符,等效于 isalnum() | ispunct()

C语言程序设计--字符串与指针及数组与指针的更多相关文章

  1. 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。

    //编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...

  2. 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组

    原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...

  3. 深入理解C语言中的指针与数组之指针篇

    转载于http://blog.csdn.net/hinyunsin/article/details/6662851     前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...

  4. 深入理解C语言中的指针与数组之指针篇(转载)

    前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...

  5. C语言中的声明解析规则——数组,指针与函数

    摘要:C语言的申明存在的最大问题是:你无法以一种人们所习惯的自然方式和从左向右阅读一个声明,在引入voliatile和const关键字以后,情况更加糟糕了.由于这些关键字只能出现在声明中,是的声明形式 ...

  6. C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数

    1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...

  7. 程序员之--C语言细节13(二维数组和指针,&*a[i][0]的理解,数组1[e]和e[1]非常可能你没见过)

    主要内容:二维数组和指针.&*a[i][0]的理解.数组1[e]和e[1] #include <stdio.h> #define NUM_ROWS 10 #define NUM_C ...

  8. [C++]指针和指向数组的指针[一维数组与指针]

     1.一维数组与指针      形如:int型 数组 a[10]                1)&a[0]  地址常量;地址类型:int *型   ; 存储数组a的首地址          ...

  9. 【原创】一起学C++ 之指针、数组、指针算术 ---------C++ primer plus(第6版)

    C++ Primer Plus 第6版 指针和数组基本等价的原因在于指针算术! 一.指针 ⑴整数变量+1后,其值将增加1: ⑵指针变量+1后,增加的量等于它指向的类型的字节数: ⑶C++将数组名解析为 ...

  10. C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值

    C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...

随机推荐

  1. maven中snapshot快照库和release发布库的区别和作用 (转)

    Maven介绍,包括作用.核心概念.用法.常用命令.扩展及配置 http://www.trinea.cn/android/maven/ 本文来源于铁木箱子的博客http://www.mzone.cc ...

  2. js requestAnimationFrame

    requestAnimationFrame,Web中写动画的另一种选择  原文:https://www.cnblogs.com/Wayou/p/requestAnimationFrame.html H ...

  3. swig和angular双花括号的冲突

    swig和angular都用{{name}}来作为模板中变量的取值, 那么要共用的话怎么办: {% raw %}{{ foobar }}{% endraw %} 或者 config(['$interp ...

  4. [转]Python多线程与多线程中join()的用法

    https://www.cnblogs.com/cnkai/p/7504980.html Python多线程与多进程中join()方法的效果是相同的. 下面仅以多线程为例: 首先需要明确几个概念: 知 ...

  5. 新手windows安装nginx

    windows安装nginx,下载地址:http://nginx.org/download/ 下载的时候,下载 .zip 后缀的压缩包,因为 .zip 的压缩包有nginx.exe 启动文件,其他没有 ...

  6. python unittest 3- 框架Nose

    当前python的测试框架主要有以下三个: 1)zope.testing 2)py.test 3)Nose Nose下载:https://github.com/nose-devs/nose 1.Nos ...

  7. springmvc 文件下载

    1.使用servlet的API实现 参考:http://my.oschina.net/u/1394615/blog/311307 @RequestMapping("/download&quo ...

  8. VC++ 链接错误LINK : fatal error LNK1104: cannot open file "*.lib"

    问题描述: 运行VC++编译时经常出现 Linking… LINK : fatal error LNK1104: cannot open file “*.lib” Error executing li ...

  9. IE8 AJAX 不能正常工作 解决办法

    function crossDomainAjax(url, successCallback) { // IE8 & 9 only Cross domain JSON GET request i ...

  10. 利用Visio绘制数据流图与组织结构图

    绘制数据流图: 利用Visio 2007来绘制网上书店系统的数据流图.利用Visio 2007创建Gane- Sarson数据流图,可以选择“软件和数据库”模板,然后再选择“数据流模型图”,创建之后可 ...