day5 -指针

指针和指针变量

  1. 指针就是地址,地址就是指针
  2. 地址就是存放单元的编号
  3. 指针变量是存放地址的变量
  4. 指针和指针变量是两个不同的概念,但是要注意,通常我们叙述时会把指针变量简称为指针,实际他们含义并不一样

指针热身-1

 1 #include <stdio.h>
 2
 3 int main(void)
 4 {
 5     int * p; //p是变量的名字,int * 表示p变量存放的是int变量的地址
 6             // int *p不表示一个名字叫做p的变量
 7             //int*p应该理解为p是变量名,p变量的数据类型是int *类型
 8             //   所谓 int *类型实际就是存放int变量地址的类型
 9     int i=3;
10     int j;
11     p=&i;
12     /*
13         1.p保存了i的地址,因此p指向i;
14         2.p不是i,i也不是p,更准确的说,修改p的值不影响i的值,修改i的值也不影响p的值
15         3.如果一个指针变量指向了某个普通变量则
16             *的指针变量 就完全等同于  普通变量
17             例子:
18             如果p是个指针变量,并且p存放了普通变量i的地址
19             则p指向了普通变量i
20             *p 完全等同于  i
21             或者说 在所有出现*p的地方都可以替换成i
22             *p 就是以p的内容为地址的变量
23     */
24 //    p=i; //error,因为类型不一致,p只能存放int类型变量的地址,不能存放int类型变量的值
25     j = *p;  //等价于j= i
26     printf("i=%d,j= %d",i,j);
27     return 0;
28 }

指针的重要性:

  1. 表示一些复杂的数据结构
  2. 快速的传递数据
  3. 使函数返回一个以上的值
  4. 能直接访问硬件
  5. 能够方便出来字符串
  6. 是理解面向对象语言中引用的基础

总结:指针是c语言的灵魂

指针的定义

地址:内存单元的编号

       从零开始的非负整数

  范围:

指针:

指针的分类

  • 基本类型指针
  • 指针和数组
  • 指针和函数
  • 指针和结构体
  • 多级指针
时间: 2024-11-07 07:52:11

day5 -指针的相关文章

Python实战之路-day5

生活在于改变,改变自己的生活需要勇气,改变自己的目标更需要勇气.  Hello Python - day5! MVC心法 针对存储端(M)的数据进行增删改查 入库:V端通过HTML.CSS.JS的数据通过GET.POST发送请求,C端(python)通过request.form.get()或request.args.get()接受V端的数据,格式化通过列表.字典.字符串结合python语法存储到M端 出库:V端发送get请求数据,C端python通过request.args.get()拿到get

[c/c++] programming之路(17)、高级指针

一.二级指针 二级指针的作用:1.函数改变外部变量指针2.外挂改变一个指针的值 1 #include<stdio.h> 2 #include<stdlib.h> 3 4 void main(){ 5 int a = 10; 6 int b = 20; 7 int *p1 = &a; 8 int *p2 = &b; 9 int **pp = &p1; 10 printf("%d,", **pp); 11 printf("\n%x,

C++学习笔记----2.4 C++引用在本质上是什么,它和指针到底有什么区别

从概念上讲.指针从本质上讲就是存放变量地址的一个变量,在逻辑上是独立的,它可以被改变,包括其所指向的地址的改变和其指向的地址中所存放的数据的改变. 而引用是一个别名,它在逻辑上不是独立的,它的存在具有依附性,所以引用必须在一开始就被初始化,而且其引用的对象在其整个生命周期中是不能被改变的(自始至终只能依附于同一个变量). 在C++中,指针和引用经常用于函数的参数传递,然而,指针传递参数和引用传递参数是有本质上的不同的: 指针传递参数本质上是值传递的方式,它所传递的是一个地址值.值传递过程中,被调

【转】父类子类指针相互转换问题

1.当自己的类指针指向自己类的对象时,无论调用的是虚函数还是实函数,其调用的都是自己的: 2.当指向父类对象的父类指针被强制转换成子类指针时候,子类指针调用函数时,只有非重写函数是自己的,虚函数是父类的: 3.当指向子类对象的子类指针被强制转换成父类指针的时候,也就是父类指针指向子类对象,此时,父类指针调用的虚函数都是子类的,而非虚函数都是自己的. 将上面三句话总结成一句话就是:当父类子类有同名非虚函数的时候,调用的是转换后的指针类型的函数: 当父类子类有同名虚函数的时候呢,调用的是指针转换前指

C++ Primer 学习笔记与思考_7 void和void*指针的使用方法

(一)void的含义 void的字面意思是"无类型",void差点儿仅仅有"凝视"和限制程序的作用,由于从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错.提示"illegal use of type 'void'".只是.即使void a的编译不会出错.它也没有不论什么实际意义. void真正发挥的作用在于: (1) 对函数返回的限定: (2) 对函数參数的限定. int f(void); equal t

当this指针成为指向之类的基类指针时,也能形成多态

this指针: 1)对象中没有函数,只有成员变量 2)对象调用函数,通过this指针告诉函数是哪个对象自己谁. 1 #include<iostream> 2 using namespace std; 3 class Shape 4 { 5 public: 6 //void cal_display(Shape* this) 7 void cal_display(){ 8 display(); 9 this->display(); 10 } 11 private: 12 virtual vo

指针x(超简单的x)

指针! 1 #include<cstdio> 2 #include<iostream> 3 4 using namespace std; 5 6 /* 7 相加或者相乘 8 */ 9 10 int main() 11 { 12 int a,b,s,t; 13 cin>>a>>b; 14 int *p; 15 p=&a; 16 int *q; 17 q=&b; 18 s=(*p)+(*q); 19 t=(*p)*(*q); 20 printf(

二重指针实现排序

1 //双指针对十个数排序 2 3 #include <stdio.h> 4 #include <stdlib.h> 5 #define N 8 6 //2017.3.5 7 int main() 8 { 9 //初始化数组 赋值N个数 用指针数组指向 10 int num[N]; 11 int *pNum[N]; 12 int **p = NULL; 13 for (int i = 0; i < N; i++) 14 { 15 num[i] = rand() % 100;/

c指针-专题

六---指针 内存和地址怎么理解呢? 机器中有一些位置,每一个位置被称为[字节]/byte,许多现代机器上,每个字节包含8个位.更大内存单位[字],通常包含2个或4个字节组成. 一个字包含4个字节,它的地址是什么? 他仍然只有一个地址,是最左边还是最右边的那个字节的位置,取决于机器. 机器事实-关于整型的起始位置: 在要求边界对齐(boundaryalignment)的机器上,整型存储的起始位置只能是某些特定的字节,通常是2或4的倍数. 变量名和地址关系? 所有高级语言的特性之一,就是通过名字而