字符数组,指针与数组,动态数组

来源:互联网 发布:四柱算命软件 编辑:程序博客网 时间:2024/05/22 08:06

一、字符数组

1了解scanf和gets的区别

2、字符串处理函数

(1)、strlen(字符串):计算字符串长度,返回字符串的有效长度。

(2)、gets(字符数组):输入一行字符序列到字符数组,返回数组的首地址。

(3)、puts(字符串):将字符串输出到终端。

(4)、strcat(字符数组,字符串):将字符串连接到数组中的串后面,返回数组的首地址。

(5)、strcpy(字符数组,字符串):复制字符串到字符数组,返回字符数组的首地址。

(6)、strcmp(字符串1,字符串2):两个字符串比较,字符串1大的话返回正数值,字符串1小的话返回负数值,如相等返回整数0。

(7)、strlwr(字符串):将字符串大写字母转换为小写,返回该串的首地址。

(8)、strupr(字符串):将字符串小写字母转换为大写,返回该串的首地址。

二、指针与数组

1、理解指针运算

2、通过指针访问数组元素(p[i]与*(p+i)等价)

/*用指向字符串的指针变量处理两个字符串的合并*/

3、注意地址越界问题

/*地址越界问题*/
#include"stdio.h"
main()
{
char ps[]="Good!",*p=ps;
char pt[]="You are a student.";
printf("%s\n",ps);
for(p=ps;p<ps+10;p++)//这里地址越界
*p='M';
printf("%s\n",ps);//ps的字符串结束标志被破坏
scanf("%s",ps);// 输入字符串长度超过5则越界

printf("%s\n",ps);
}

这是一个地址越界的程序,注意平常一定要注意,防止出现地址越界。

4、字符数组、字符指针和字符串

/*用指向字符串的指针变量处理两个字符串的合并/

#include"stdio.h"
void main()
{
char a[80]="Hao are you.",*p=a;
char b[80]="I am fine,thank you.",*q=b;
printf("a                                b\n");
printf("%s                     %s\n",a,b);
while(*p)
p++;
while(*q)
*p++=*q++;
*p='\0';
p=a;
q=b;
printf("a                                                 b\n");
printf("%s                     %s\n",p,q);
}

5、指针数组

(1)、理解多维数组的地址

(2)、指向数组元素和指向分数组的指针变量

一维指针数组:

int i=1;int j=2;int k=2;int m=3;

int *p[4]={&i,&j,&k,&m};

定义指向整个一维数组的指针变量:

int(*p)[5];和int*p[5];

区别在于第一个是该指针变量指向的是整个数组,第二个表示数组元素为指向基类型的指针变量。

6、动态数组

(1)、分配内存空间函数malloc

(类型说明符*)malloc(unsigned int size);

(2)、分配内存空间函数calloc

(类型说明符*)calloc(n,size);

(3)、释放内存空间函数free

free(void*ptr);



0 0
原创粉丝点击