关闭

《c语言从入门到精通》看书笔记——第10章 指针

标签: c语言指针的常用关系字符串数组指针
246人阅读 评论(0) 收藏 举报
分类:
1、地址与指针
     地址:就是内存区中对每个字节的编号
     指针:可以看作是内存中的一个地址。在程序中定义了一个变量,在进行编译时就会给该变量在内存中分配一个地址,通过访问这个地址可以找到相应的变量,这个变量的地址称为该变量的“指针”
     如果一个变量专门来存放另一个变量的地址,它就是指针变量。在c语言中专门用来存放内存单元地址的变量类型即指针类型。
2、指针变量:
     (1)指针变量的一般形式:类型说明*变量名     ;其中“*”表示该变量是一个指针变量,变量名即为定义的指针变量名,类型说明便是本指针变量所指向的变量的数据类型。
     (2)指针变量的赋值:给指针变量的赋值只能赋予地址。     
          一般形式为:&变量名;     
          两种方法:
               1)定义指针变量的同时就进行赋值,例如:int a; int *p=&a;
               2)先定义指针变量之后再赋值,例如:int a; int *p; p=&a;
                    如果先定义完指针变量之后再赋值注意不要加“*”;
     (3)指针变量的引用:引用指针变量是对变量进行简介访问的一种形式。
               对指针变量的引用形式如:*指针变量;其含义是引用指针变量所指向的值。
     (4)"&"和"*"运算符
           运算符“&”一个返回操作数地址的单目运算符,叫做取地址运算符;
           运算符“*”是单目运算符,叫做指针运算符,作用是返回指定地址内的变量的值。
     (5)“&*”和“*&”的区别
          “&”和“*”的运算符优先级别相同,按自右向左的方向结合。
               例如:int a;
                    p=&a;
               "&*p"就是先进行“*”运算,即“*p”相当于变量a;再进行“&”运算,就是说,“&*p”是取a的地址。同理“*&a”就是取变量a所在地址的值,就是变量a;
     (6)指针自加自减运算:不同于普通变量的自增自减运算,这里的自增自减是地址的自增自减,加减的值和指针变量的类型有关。
3、一维数组与指针
     当定义一个一位数组时,系统会在内存中为该数组分配一个存储空间,其数组名称就是数组在内存中的首地址,若再定义一个指针变量,并将数组的首地址传给指针变量,则该指针就指向了这个一维数组。
4、二维数组与指针
     表示二维数组中元素地址的方法:
     (1)&a[0][0]既可以看作数组0行0列的首地址,也可以看做二维数组的首地址。&a[m][n]就是第m行n列元素的地址。
     (2)a[0]+n表示第0行第n个元素的地址
5、字符串与指针:
     访问一个字符串有两种方式,一是使用字符数组来存放一个字符串,从而实现对字符串的操作;二是使用字符指针指向一个字符串,此时可不定义数组。
6、字符串数组
     字符数组是一个一维数组,而字符串数组是以字符串作为数组元素的数组,可以将其看成一个二维字符数组。
     例如:
     char country[5][20]=
     {
          "China",
          "Japan",
          "Russia",
          "Germany",
          "Switzerland"
     }
     字符型数组变量country被定义为含有5个字符串的数组,每个字符串的长度要小于20(这里要考虑字符串最后的\0)。但这样浪费空间。但是用指针数组就好,不会浪费空间。
     指针数组:一个数组,其元素均为指针类型数据,称为指针数组。也就是说,指针数组中的每一个元素都相当于一个指针变量。
      例如:
          int i;
          char *month[]=
          {
               "January",
               "February"
          };
7、指向指针的指针
     指向指针的指针变量定义如下:
          类型标识符 **指针变量名;例如:int **p;
     其含义为定义一个指针变量p,它指向另一个指针变量,该指针变量又指向另一个基本整型变量。由于指针变量运算符*是自右自左结合,相当于:int *(*p);
8、C语言中实参变量和形参变量之间的数据传递是单向的“只传送”方式。指针变量做函数参数也是如此,调用函数不可能改变实参指针变量的值,但可以改变实参指针变量所指变量的值。
9、参数字符串的长度是不定的,并且参数字符串的长度不需要统一,且参数的数目也是任意的,并不规定具体个数。
0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:14160次
    • 积分:367
    • 等级:
    • 排名:千里之外
    • 原创:22篇
    • 转载:8篇
    • 译文:0篇
    • 评论:0条
    文章分类