2017.11.15 c语言基础与提高(三)

来源:互联网 发布:网络上放妻协议 编辑:程序博客网 时间:2024/06/08 07:50

本次 是一些有关指针的知识。

1.指针是什么?起什么作用?
指针是变量的一种,里面是一个地址,通过这个地址找到要找的数据。
实质:单元的地址就是指针内容;


2. 指针运算符
   &是取地址的运算符,*是表示指针运算符
例:
int  *p1,a ;
p1=&a;          
*p1 =3;

3.指针作函数参数
函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。作用是将变量的地址传送到另一个函数中。
参考例程:p1swapp2, aswapb ;abcswap ;
注意:变量的地址赋予指向相同类型的指针变量 
4.指针的运算--赋值运算:
指针变量初始化赋值;
把一个变量的地址赋予指向相同数据类型的指针变量;
例如:int a, *pa ;
pa = &a ;  //把a的地址给pa,都是整型
把一个指针变量的值赋予相同类型的另一个指针变量;
        Int a, *pa = &a, *pb ;  pb = pa;  // 把a的地址给pb;

指针与NULL的比较
空指针是对指针变量赋予0值得到的:
#define NULL 0
Int  *p=NULL
p为指针变量,p=NULL表示空指针,不指向任何变量。
P !=NULL表示p不是空指针;

int
if(n == 0)或者 if (n != 0)
float
const float EPSINON = 0.00001;
if ((n >= -EPSINON ) && (n <= EPSINON ))
bool类型
if (flag)或者if (!flag)
指针类型
if (n == NULL)或者if (n != NULL)

注意:
指针变量未赋值时,可以是任意值,是不能使用的,会造成意外错误。而指针变量给NULL值后,则是可以使用的,只是不指向具体的变量。


指针变量的使用步骤:
1. 定义指针变量;
2.给指针变量赋地址;
3.正常使用指针进行运算;

a.数组元素和指针
数组的指针是指数组的起始地址,数组元素的指针是数组元素的地址。

用指针引用数组元素
C语言规定:
如果指针变量p已指向数组中的一个元素,则p+1指向同一数组中的下一个元素。

指向数组的指针变量也可以带下标。p[i]和*(p+i)等价。


引用一个数组:
下标法:用a[i]来表示;
指针法:用*(a+i),*(p+i)表示。

指针和字符串:

在C语言中,可以用两种方法访问一个字符串。 
1)用字符数组存放一个字符串,然后输出该字符串。 
int main()

    char string[]=”I love China!”; 
    printf("%s\n",string); 
    return 0;

说明:和前面介绍的数组属性一样,string是数组名,它代表字符数组的首地址

2) 用字符串指针指向一个字符串。 
main()

char *string[]={”I love China!”,”I am ”}; 
printf("%s\n",string); 

char *s="C Language"; 则表示s是一个指向字符串的指针变量。
把字符串的首地址赋予s。 


字符数组和字符串的区别
1.    字符串指针变量本身是一个变量,用于存放字符串的首地址。而字符串本身是存放在以该首地址为首的一块连续的内存空间中并以‘\0’作为串的结束。
字符数组是由于若干个数组元素组成的,它可用来存放整个字符串。
2.   对字符串指针方式 char *ps="C Language"; 
可以写为:
char *ps; ps="C Language"; 
   而对数组方式: char st[]={"C Language"}; 
不能写为:
char st[20] ; st={"C Language"}; 
而只能对字符数组的各元素逐个赋值。

3.前面说过,当一个指针变量在未取得确定地址前使用是危险的,容易引起错误。
但是对指针变量直接赋值是可以的。因为C系统对指针变量赋值时要给以确定的地址。 
因此, char *ps="C Langage"; 
或者 char *ps; ps="C Language"; 都是合法的。

 
以上就是本次知识点!

原创粉丝点击