指针
1.指针是什么?起什么作用?
指针是变量的一种,里面是一个地址,通过这个地址找到要找的数据。
实质:单元的地址就是指针内容;
2.指针运算符
&是取地址的运算符,*是表示指针运算符
3.指针作函数参数
函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。作用是将变量的地址传送到另一个函数中。
4.指针的运算--赋值运算:
指针变量初始化赋值;
把一个变量的地址赋予指向相同数据类型的指针变量;
指针和数组
a.数组元素和指针
数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。
用指针引用数组元素
C语言规定:
如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。
例:
P的初值为&a[0] :
p+i和a+i都是a[i]的地址。
*(p+i)和*(a+i)都是p+i和a+i所指向的数组元素,即a[i].
指针和字符串
在C语言中,可以用两种方法访问一个字符串。
1)用字符数组存放一个字符串,然后输出该字符串。
int main()
{
char string[]=”I love China!”;
printf("%s
",string);
return 0;
}
说明:和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址
2)用字符串指针指向一个字符串。
main()
{
char *string[]={”I love China!”,”I am ”};
printf("%s
",string);
}
char *s="C Language"; 则表示s是一个指向字符串的指针变量。
把字符串的首地址赋予s。
字符数组和字符串的区别
1.字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘ ’作为串的结束。
字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。
2.对字符串指针方式 char *ps="C Language";
可以写为:
char *ps; ps="C Language";
而对数组方式:char st[]={"C Language"};
不能写为: char st[20] ; st={"C Language"};
而只能对字符数组的各元素逐个赋值。
前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。
但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。
因此, char *ps="C Langage";
或者 char *ps; ps="C Language"; 都是合法的。