C语言程序设计--字符串与指针及数组与指针 - 土拨鼠不再挖洞
2019-01-01 21:58:00 Author: www.cnblogs.com(查看原文) 阅读量:7 收藏



数组的定义


#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() 

文章来源: http://www.cnblogs.com/KevinGeorge/p/10200574.html
如有侵权请联系:admin#unsafe.sh