字符串
C语言中无字符串常量,用字符数组处理字符串,字符串结束标志’\0’;
输入一个字符串,让其逆序输出
#include<stdio.h>
#define N 20
int main(int argc, char *argv[])
{
char arr[N] = {0};
int i, n;
printf("Please input a string:");
gets(arr);
n = sizeof(arr) / sizeof(char);
for(i=n-1;i >= 0;i--){
putchar(arr[i]);
}
putchar('\n');
return 0;
}
字符串函数
C库中实现了很多字符串处理函数
#include<string.h>
几个常见的字符串处理函数
求字符串长度的函数strlen
字符串拷贝函数strcpy
字符串连接函数strcat
字符串比较函数strcmp
字符串长度函数strlen
格式:strlen(字符数组)
功能:计算字符串长度
返值:返回字符串实际长度,不包括’\0’在内
\xhh表示十六进制数代表的符号
\ddd表示8进制
n =sizeof(arr) / sizeof(char)
区别
字符串拷贝函数strcpy
格式:strcpy(字符数组1,字符串2)
功能:将字符串2,拷贝到字符数组1中去
返值:返回字符数组1的首地址
说明:
-字符数组1必须足够大
-拷贝时’\0’一同拷贝
字符串连接函数strcat
格式:strcat(字符数组1,字符数组2)
功能:把字符数组2连到字符数组1后面
返值:返回字符数组1的首地址
说明:
-字符数组1必须足够大
-连接前,两串均以’\0’结束;连接后,串1的’\0’取消,新串最后加’\0’
字符串比较函数strcmp
格式:strcmp(字符串1,字符串2)
功能:比较两个字符串
比较规则:对两串从左向右逐个字符比较(ASCII码),直到遇到不同字符或’\0’结束
返值:返回int型整数
a. 若字符串1< 字符串2,返回负整数
b. 若字符串1> 字符串2,返回正整数
c. 若字符串1== 字符串2,返回零
strncpy(p,p1,n) 复制指定长度字符串
atrncat(p,p1,n) 附加指定长度字符串
strcasecmp 忽略大小写比较字符串
strncmp(p,p1,n) 比较指定长度字符串
strchr(p,c) 在字符串中查找指定字符
strstr(p,p1) 查找字符串
isalpha() 检查是否为字母字符
isupper() 检查是否为大写字母字符
islower() 检查是否为小写字母字符
isdigit() 检查是否为数字
指针
C程序设计中使用指针的作用:
使程序简洁、紧凑、高效
有效地表示复杂的数据结构
动态分配内存
得到多于一个的函数返回值1
在C语言中,内存单元的地址称为指针,专门用来存放地址的变量,称为指针变量
地址和变量
在计算机内存中,每一个字节单元,都有一个编号,称为地址。
变量是对程序中数据存储空间的抽象。
指针变量的说明
一般形式:
<存储类型> <数据类型> *<指针变量名>;
指针初始化:指针在说明的同时,也可以被赋予初值,称为指针的初始化。
指针的存储类型是指针变量本身的存储类型。
指针说明时指定的数据类型不是指针变量本身的数据类型,而是指针目标的数据类型。简称为指针的数据类型。
指针指向的内存区域中的数据称为指针的目标
如果它指向的区域是程序中的一个变量的内存空间,则这个变量称为指针的目标变量(指针的目标)。
如果p为一个指针,那么它的内容是地址量;*p是指针指向的对象,它的内容是数据;&p是指针变量占用的存储区域的地址,是个常量。
指针的赋值运算指的是通过赋值运算符向指针变量送一个地址值
向一个指针变量赋值时,送的值必须是地址常量或指针变量,不能是普通的整数(除了赋零以外)
指针赋值运算常见的有以下几种形式
把一个普通变量的地址赋给一个具有相同数据类型的指针。
把一个已有地址值的指针变量赋给具有相同数据类型的另一个指针变量。
把一个数组的地址赋给具有相同数据类型的指针。
指针运算
指针运算是以指针变量所存放的地址量作为运算量的实质就是地址的计算。
指针运算的实质是地址的计算。
指针运算的种类是有限的,它只能进行赋值运算】算术运算和关系运算