• 指针类型:非常重要 c


    1. 基本数据类型作为值传递,值不变;
    2. 指针变量格式:变量类型 *变量名;指针变量只能存储地址;
    3. &a就是取普通变量的地址;
    4. p= &a表示指针变量p指向了变量a;指针变量占据8个字节;
    5. *p = 10;  因为之前把a的地址赋值给了p;,所以对p进行赋值就会间接改变a的值;
    6. 我有了你的地址,我就可以改变你的值;指针变量的工作就是存储地址;
    7. 指针就一个作用:能够根据一个地址值,访问对应的存储空间;
    8. int *p;   表示指针变量只能指向整型数据的变量;
    9. 指针变量的作用间接实现了多返回值的作用;
    10. .

    指针的使用注意:

    1. 不建议写法1:int *p;   double d = 10.0;   p = &d;因为类型不一样;
    2. 不建议写法2:int *p;    p= 200;    200不能作为指针地址;指针变量只能存储地址;
    3. 注意3:int *p;     printf("%d,*p");    指针变量未经过初始化,不要拿来间接访问其他存储空间;
    4. 注意4:*p在赋值之后代表的是存储空间;    int *p=&a;
    5. 不正确写法5:   *p= &a;   正确的写法是   p= &a;    可以是    *p=‘a’;
    6. 定义变量时的*仅仅是一个象征,没有其他特殊的含义;

    指向指针的指针;

    1. int a = 20;int *p =&a;int **pp=&p;int ***ppp=&pp;
    2. 一级指针经常用,二级指针都很少用了;
    指针与数组
    1. %d int;%f floatdouble;%ld long;%lld long long;%c char ;%s 字符串; %zd unsigned long;
    2. 在64位编译器下,任何指针都只占用8个字节的存储空间;
    3. %p可以查看地址值;
    4. 对数组元素的访问有几种方式:1》用数组名来访问:数组名【下标】ages【1】2》用指针做为数组来访问:指针变量名【下标】p【1】3》用*(p+i)来访问;
    5. 指针变量的+1究竟加多少,取决于指针的类型;如果是int的指针类型+1代表加4;如果是double类型的指针,+1代表加8;
    6. 利用一个指针来接受一个数组,指针变量array指向了数组的首元素;
    指针与字符串
    1. %s可以输出字符窜直到遇到
    2. 利用数组定义字符串:char name[]="it"(字符串变量 ,可以改);利用指针定义字符串:char *name2 = "it"(字符串常量 ,不能改,放在常量区;经常使用;
    3. 内存可以分成两块:常量区(存放一些常量字符串);堆(存放对象);栈(存放局部变量);
    4. 字符串变量;字符串常量;
    5. 指针数组(字符串数组)char *names[5] = {"jack","rose","jake"}
    6. char name[20];printf("请输入姓名: ");scanf("%s",name);printf("刚才输入的字符串是:%s ",name);
    7. 注意:数组里面的scanf不用写&;
    返回指针的函数:
    1. 只需要看懂语法就行;
    2. char *test(){return "rose"};这个函数为什么有指针;说明这个函数返回的值类型是char *;就是rose这个字符串;
    3. char test(){return "A"};就表示返回值是char类型,就是单字节;
    指向函数的指针
    1. 说明函数也有地址;
    2. void(*p)();(*p)是固定写法,代表指针变量p将来肯定是指向函数;左边的void:表示指针变量p指向的函数没有返回值;右边的()表示指针变量p指向的函数没有形参;
    3. 函数名代表函数地址;数组名代表数组的地址;
    4. void(*p)();p=test;(*p)();这个是利用指针变量间接调用函数;也可以写成p( );
    5. char *是传字符串;

  • 相关阅读:
    剑指Offer解题报告(Java版)——约瑟夫环 45
    剑指Offer解题报告(Java版)——扑克牌顺子 44
    剑指Offer解题报告(Java版)——n个骰子的点数 43
    基础知识:HashTable和HashMap的区别
    基础知识:Arraylist、vector、Linkedlist的比较
    第7章 SportsStorePeta 一个真实的应用程序
    第24章 捆绑包
    第23章 模型验证
    第22章 模型绑定
    第21章 URL和Ajax辅助器方法
  • 原文地址:https://www.cnblogs.com/williamliuwen/p/5367486.html
Copyright © 2020-2023  润新知