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可以是字符数组名或字符串常量

你可能感兴趣的:(C语言指针)