Head First C 笔记。C语言–指针,–指针。

嗨翻c语言

C语言–指针,–指针

1. 入门

  • 何以字符从零开始编号?  

   字符的目录数值表示的是一个偏移量,它表示的凡眼前所引述的字符与第一独字符中不等小个字符。

  • 单双引号的别?

   单引号 一个字符,双~ 字符串

  • 字符串字面值和字符数组的分别?

   前者是常量,一旦赋值,不可知重复修改。

  • Break 和continue?

   break是脱离循环,continue是脱时循环并且进行下一样糟巡回。

   break不可知用于if语句。

一、指针

2.储存器和指针

  • 区区摆存储器图

   图一图片 1

   图二                           
一个学JAVA时用的希冀(来源博瑞思创—翁老师)

    图片 2

  • Int *a =5   

    A 是一个指南针变量,它保存一个地方,地址被保留一个int类型的数值5

  • 指南针的意   

   指针可以避免副本的发生与共享数据。

  • 指南针像是一个遥控器,存储器像是一个冰箱。

图片 3

   存储器和指针的图 

  • sizeof(指针) 

*   于32各项备受归4,在64各遭到回到8.*

  • 数组称为做指针

*   *

1 int a []={1,2,3};
2 int *b =a;
3 c=sizeof(a);
4 d=sizeof(b);

   c = 3          d = 4/8 (32/64)

   &a == a    &b! = b

  • 指南针的后退   

*    
把数组赋给指针变量,指针变量就见面只了解数组的地址信息,而无懂得数组的轻重。相当给指针丢失了一部分音讯,称这种消息丢失为退化。*

   数组变量不克依靠为外地方

  • 指针类型

   指针也是发品种,char int 
等,主要是于展开指针运算时得因指针类型进行转移,比如char类型的指针a
,a+1 存储器地址 +1

                                        
  int类型的~b                 ,b+1 ~ +4

  • 指南针输出

    1 int num[]={1,2,3}
    2 printf(“%p”,num);//地址
    3 printf(“%i”,num[1]);//数值
    4 printf(“%i”,(num+1));//数值
    5
    6
    7
    8 char
    msg=”Hello”
    9 puts(msg+1)//字符
    10 printf(“%p”,msg)//地址

  • 指南针的加法交换律(来源:百度)

  • 1 int dose[]={1,2,3};

    2 
    3 dose[2] == *(dose+2)            ==            *(2+dose)  ==2[dose]
    4 
    5 只要一个是指针,一个是整形就行。
    

    从而指针输入数据

   

1 fgets(food,sizeof(food),stdin);
2 scanf("%4s",food);
3 gets(food);

   安全自赛至小

   scnaf遇到空格就会告一段落。(亲测有用)

  • card[]   or   *card?
  • 1 card []=”qwe”;//数组

    2 
    3 
    4 
    5 一下这两个等价
    6 void func(char card[])
    7 {
    8 //card 是指针
    9 }
    

    10
    11 void func(*card)
    12 {
    13 //card 是指针
    14 }

    const与字符串常量

   字符串常量都是仅仅读的,不可修改。加了const以后,会当您拟修改const修饰过的变量时编译器报错。

  • 字符串常量和字符数组

    1 char * card=”QWE”//不可修改
    2 char car[]=”BBB”//可修改

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

*  *

1.指针声称格式

 1> 格式:变量类型 *变量名。举例:char
*p,定义了一个指南针变量p,只能存储地点

 * 记住*匪是凭借针变量名,只是指针的一个标明

 2> 作用:指针就一个打算,存储地点,并且根据地址值访问对应之蕴藏空间

 3> 例子

图片 41 int
main() 2 { 3 int a = 90; 4 int *p ; 5 p = &a; 6 return 0; 7 } 指针代码

 * 代码在内存中之代表

图片 5

 * 注意点:① int *p只能指于int类型的多寡
②指针变量为通过初始化,不要拿来间接访问该    他存储空间 ③
不容许这样形容:*p = &a ,*p代表访问指针p所指向的囤空间 ④
定义变量  是的*偏偏是一个象征,没有另外特殊意义

其次、指向指针的指针

1.举例

  char a=’A’;

  char *p = &a; // 指向char类型存储空间的指针

  char **pp = &p; // 指向指针的指针

  char ***ppp = &pp; // 三级指针(不常用)

 

2.指针应用

 1> 实现调用一个函数,得到多个返回值

图片 6 1
#include <stdio.h> 2 3 int sumAndMinus(int num1, int num2, int
*num3) 4 { 5 *num3 = num1 – num2; 6 return num1 + num2; 7 } 8 9 10 int
main() 11 { 12 int a = 12; 13 int b = 8; 14 int minus; 15 int sum =
sumAndMinus( a, b, &minus); 16 return 0; 17 } 多返回回值

3.指针占用内存

 * 指针占用内存和具象编译器有关,在Xcode中另外类型指针占用8只字节

老三、指针与数组

1.数组的遍历

 //利用下标进行遍历

 int nums[3] = {1,2,3,}

 for(int i = 0;i < 3; i++)

  {

   printf(“%d\n”, nums[i]);

  }

2.采用指针指向数组进行遍历

 int nums[3] = {1,2,3,};

 int *p = &nums ;

 //指针p指向数组的首元素地址;

 //(p+1)指向 nums[1];

 for(int i = 0;i < 3; i++)

  {

   printf(“%d\n”, *(p+i));

   printf(“%d\n”, p[i ]);

  }

季、指针与字符串、指针数组

1.字符数组与字符串的可比

 char c1[] = “name”;

 //上面这行代码表示的凡字符数组,所表示的是字符串变量

 char *c2 = “name”;

 //上面这行代码。指针变量c2指向的凡字符串首字母。它表所表示的凡字符串常量

 //两行代码的差,也与数码在内存中的蕴藏有关

 char *c3 = “name”;

 //注意:c2与c3所便是的凡暨一个地点

2.定义字符串的星星点点栽方法

 1> 利用数组

 char c[] = “name”;

 //特点:字符串里面的字符是可改的

 //以场所:字符串的情要常修改

 2> 利用指针

 char *c = “name”;

 //特点:字符串其实是一个常量字符串,里面的字符是匪克改的

 //以场所:字符串的情无欲修改,而且这字符串经常采取

3.指针数组

 1> 指针数组的定义

 char *name[3] = {“jack”, “rose”, “tom”};

 2> 字符串的输入

 //新建一个字符数组,用来保存用户输入的字符串

 char name[20];

 // 数组名就意味着数组首元素的地方

 scanf(“%s”, name);

五、指于函数的指针与归指针的函数

 1.返回指针的函数

 char *test()

 {

  return  “name”;

 }

 int main()

  {

   char *p = test();

   return 0;

  }

2.指于函数的指针

void test()

{

  printf(“调用了test函数”);

}

int main()

{

  //(*p)是固定写法,代表指针变量p将来肯定是凭于函数

  //左边的void :指针变量P指向的函数没有返回值

  //右边的():指针变量p指向的函数没有形参

  void (*p)();

  //函数名为就是函数地址

  p = test;

  //函数调用的老三 种植方式

  (*p)();// 第一栽办法:直接调用

  test();// 第二种方式:利用指针调用

  p();//第三种植艺术:利用指针调用

  return 0;

}

 

 

图片 7
图片 8

http://www.bkjia.com/Cyy/946195.htmlwww.bkjia.comtruehttp://www.bkjia.com/Cyy/946195.htmlTechArticleC语言–指针,–指针 一、指针 1.指针声称格式 1
格式:变量类型 *变量名。举例:char
*p,定义了一个指南针变量p,只能存储地点 *记住*不是指…

相关文章