C语言指针

c语言指针

因为参加了软考初级程序员,所以来复习c语言。学习c语言指针。

大一学的时候,指针根本不太理解。现在学的时候发现其实也很易懂。

1.指针是用来存放内存地址的变量。

  int *p;    // *只是一个声明符,说明他是指针 (刚开始的时候,我一直把这个搞混)

例子:  int *p,a;

 p=&a;

//p用来存放a的地址

2.指针和数组

    1)指针和一维数组

int *p,a[20];

p=a;

或者是p=&a[0]

而不是p=&a;

因为数组名就是首地址.

 2)指针和二维数组

int a[4][5] = {2,3,4,5,6,7,8,9};

int *p[5];

p=a;

我在写一个程序上遇到一个更迷惑的事,我不懂t[i]=s[i][0]是什么情况!

3.字符串和字符指针

char sa[]="hello";

如果要改变数组sa所表示的字符串,只能改变数组元素的内容。

char *sp="hello";

如果要改变字符指针sp所代表的字符串,通常直接改变指针的值,让它指向新的字符串。

4.常用的字符串处理函数

  1)scanf 只能输入不带空格的字符串,遇到空格则会结束

  2)gets遇到回车则会结束

  3)printf和puts的区别在于后者输出字符串之后会自动换行。

  4)字符串复制函数 char *strcpy(char *s1,char *s2)

该函数是把字符串s2复制到s1,直到遇到s2中的'\0'为止。

参数s1必须是字符型数组基地址,参数s2可以是字符数组名或者字符串常量

 5) 字符串连接函数strcat(s1,s2)

该函数将字符串s2接到字符串s1的后面。

参数s1必须是字符数组基地址,参数s2可以是字符数组名或字符串常量。

6)字符串比较函数strcmp(s1,s2)

该函数返回一个整数,给出字符串s1和s2的比较结果

   1)若s1和s2相等,返回0

   2)若s1大于s2,返回一个正数

   3)若s1小于s2,则返回一个负数

参数s1和s2可以是字符数组名或字符串常量

7)字符串长度函数strlen(s1)

该函数返回字符串有效字符的个数(不包括字符结束符'\0')

参数s1可以是字符数组名或字符串常量

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容