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