C语言程序设计--字符串与指针及数组与指针
数组的基本知识
数组的定义
#define SIZE 5
int array_int[5]; //未声明初始化,默认填零
float array_float[5] = {1.01, 2.23, 3.10};//未声明初始化,默认填零点零...小数部分
double array_double[SIZE];//未声明初始化,默认填零点零...小数部分
char array_char[10];//也就是字符串
char array[10] = "abcd";//未声明初始化部分默认填空
struct person array_struct[10];
typedef enum _bool {False, True} BOOL;
BOOL array_bool[3] = {False, True, True};
...
数组的引用
array_int[3] = 5;
char array_char[3] = 'a';
array_struct[3].age = 5;//结构体数组某个对象的引用赋值
二维数组
int array[10][10] = {{1,2,3},{1,3,5}};
int (*p)[10];
p = &array;
printf("%d\n",*(*p+1));
p = &array[1];
printf("%d\n",*(*p+1));
//p就是array[0][0],p+1就是array[0][1],等等
补充知识点:
//_Bool 占一位的布尔类型
#define True 1
_Bool flag = True
//与数组合作操作时候指针类型的转换
//类型 数组名称[数字];
//类型 *指针名字;
//指针 = &数组名称;
//引用的时候应该是
//(类型 *)(*指针名字+1)
char string[10] = "abcd";
char *p;
p = &string;
printf("%c\n", (char *)(*p+1))
字符串基础知识
定义、引用和指针相关
char string[10] = "abcd";
char *pstring = "abcd";
/*
二者是有区别的。*pstring是一个只有四个char类型大小的内存区域,而string是一个有10个char类型大小的内存区域,在拼接字符串的时候,使用string接起来不超过10位,不报错,超过10位就会报错,后者拼接会直接报错,因为没有内存空间了。
*/
printf("%s", string);
printf("%s", *pstring);
相关函数和操作
strcpy(p, p1) //复制字符串
strncpy(p, p1, n) //复制指定长度字符串
strcat(p, p1) //拼接字符串p1到字符串p后面
strncat(p, p1, n) //拼接指定长度字符串
strlen(p) //取字符串长度
strcmp(p, p1) //比较字符串,一样返回0,否则不为0
strcasecmp//忽略大小写比较字符串
strncmp(p, p1, n) //比较指定长度字符串
strchr(p, c) //在字符串中查找指定字符
strrchr(p, c) //在字符串中反向查找
strstr(p, p1) //查找字符串
strpbrk(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找该集合的任一元素
strspn(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找不属于该集合的任一元素的偏移
strcspn(p, p1) //以目标字符串的所有字符作为集合,在当前字符串查找属于该集合的任一元素的偏移
//* 具有指定长度的字符串处理函数在已处理的字符串之后填补零结尾符
//使用char *为返回值的函数,其他类型类似
char *result;
result = function(type var1, type var2, ...);
printf("%s\n", *result);
字符串与数字的转换
atoi(p) //字符串转换到 int 整型
itoa(int num)//int转字符串
atof(p) //字符串转换到 double 符点数
atol(p) //字符串转换到 long 整型
字符串判断
isalpha() //检查是否为字母字符
isupper() //检查是否为大写字母字符
islower() //检查是否为小写字母字符
isdigit() //检查是否为数字
isxdigit() //检查是否为十六进制数字表示的有效字符
isspace() //检查是否为空格类型字符
iscntrl() //检查是否为控制字符
ispunct() //检查是否为标点符号
isalnum() //检查是否为字母和数字
isprint() //检查是否是可打印字符
isgraph() //检查是否是图形字符,等效于 isalnum() | ispunct()
C语言程序设计--字符串与指针及数组与指针的更多相关文章
- 计算机二级-C语言-程序设计题-190118记录-通过数组和指针两种方式对字符串进行处理。
//编写一个函数fun,比较两个字符串的长度,(不使用C语言提供的求字符串长度的函数),函数返回较长的字符串.若两个字符长度相同,则返回第一个字符串. //重难点:通过数组处理和通过指针进行处理的不同 ...
- 读陈浩的《C语言结构体里的成员数组和指针》总结,零长度数组
原文链接:C语言结构体里的成员数组和指针 复制例如以下: 单看这文章的标题,你可能会认为好像没什么意思.你先别下这个结论,相信这篇文章会对你理解C语言有帮助.这篇文章产生的背景是在微博上,看到@Lar ...
- 深入理解C语言中的指针与数组之指针篇
转载于http://blog.csdn.net/hinyunsin/article/details/6662851 前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本 ...
- 深入理解C语言中的指针与数组之指针篇(转载)
前言 其实很早就想要写一篇关于指针和数组的文章,毕竟可以认为这是C语言的根本所在.相信,任意一家公司如果想要考察一个人对C语言的理解,指针和数组绝对是必考的一部分. 但是之前一方面之前一直在忙各种事情 ...
- C语言中的声明解析规则——数组,指针与函数
摘要:C语言的申明存在的最大问题是:你无法以一种人们所习惯的自然方式和从左向右阅读一个声明,在引入voliatile和const关键字以后,情况更加糟糕了.由于这些关键字只能出现在声明中,是的声明形式 ...
- C语言指针系列 - 一级指针.一维数组,二级指针,二维数组,指针数组,数组指针,函数指针,指针函数
1. 数组名 C语言中的数组名是一个特殊的存在, 从本质上来讲, 数组名是一个地址, 我们可以打印一个指针的值,和打印一个数组的值来观察出这个本质: int nArray[10] ={ 0 }; in ...
- 程序员之--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 ...
- [C++]指针和指向数组的指针[一维数组与指针]
1.一维数组与指针 形如:int型 数组 a[10] 1)&a[0] 地址常量;地址类型:int *型 ; 存储数组a的首地址 ...
- 【原创】一起学C++ 之指针、数组、指针算术 ---------C++ primer plus(第6版)
C++ Primer Plus 第6版 指针和数组基本等价的原因在于指针算术! 一.指针 ⑴整数变量+1后,其值将增加1: ⑵指针变量+1后,增加的量等于它指向的类型的字节数: ⑶C++将数组名解析为 ...
- C++ 利用指针和数组以及指针和结构体实现一个函数返回多个值
C++ 利用指针和数组实现一个函数返回多个值demo1 #include <iostream> using namespace std; int* test(int,int,int); i ...
随机推荐
- Lucas-Kanade算法总结
Lucas-Kanade算法广泛用于图像对齐.光流法.目标追踪.图像拼接和人脸检测等课题中. 一.核心思想 给定一个模板和一个输入,以及一个或多个变换,求一个参数最佳的变换,使得下式最小化 在求最优解 ...
- WWDC 2015大会到来了
WWDC 2015大会到来了,观看到凌晨3点,困死了. 从现场直播视频可以看到: (1)iOS 9的新体验:Siri更智能.Search更全面.苹果支付更方便.Notes和News更新颖好用.地图应用 ...
- 使用DataSource绑定一维数组时,DataTextField只需绑定空字符串
方法定义: public static void InitDropDownList(DropDownList ddl, bool isAddTopItem, DropDownList ddlSub, ...
- BarTender连接不上数据库怎么办
由于各种原因,在使用BarTender连接到数据库时,有可能会出现无法连接的问题,下面下编就针对两种BarTender无法连接到数据库的问题,来教大家解决的方法. 第一种 BarTender无权打开文 ...
- 解决 iOS7 通过tag 找不到 UITableViewCell 的子控件(转)
转自:http://www.cnblogs.com/waiwaibuzhidao/p/3340400.html 当iOS7问世,程序的世界就混乱了,以前良好的程序,现在是一塌糊涂,于是只能把问题一个一 ...
- Python基础教程学习笔记:第二章 列表和元组
1.序列中元素的索引: 第一个元素索引是0,第二个是1,依次递增 最后一个元素索引是-1,倒数第二个是-2,依次递减 2.序列(Sequence)的种类: 列表(list).元组(tuple).字符串 ...
- 本地Chrome测试JS代码报错:XMLHttpRequest cannot load
这种file跨域问题在火狐下是不存在的 解决Chrome下file跨域问题: 在Chrome应用程序下,右键属性,目标处添加"--allow-file-access-from-files&q ...
- CallByValue和CallByName区别
/** * Created by root * Description :CallByValue:进入函数就得先计算实参的值:CallByName:函数体重使用到的时候才计算 */ object Ca ...
- NFS exportfs 命令
exportfs 是在服务端上使用的命令,主要用来操作挂载的目录,比如我们修改了NFS配置文件,需要重启NFS服务,如果客户端正在读写,那么重启NFS服务对客户端是有影响的,因此 exportfs 命 ...
- error:1407742E:SSL routines:SSL23_GET_SERVER_HELLO:tlsv1 alert protocol version
更新的软件可以解决 TortoiseGit-preview-2.5.7.0-20180127-b2d00f8-64bit.msi和Git-2.16.2-64-bit.exe. 链接地址为: https ...