指针复习

/*
 ============================================================================
 Name        : Hello.c
 Author      :
 Version     :
 Copyright   : Your copyright notice
 Description : Hello World in C, Ansi-style
 ============================================================================
 */

#include <stdio.h>
#include <stdlib.h>
void reset(int i);
void reset2(int* p);
void add_by_point(int x,int y,int *result);
int main(void) {

    printf("%d\n",sizeof(char));
    printf("%d\n",sizeof(int));
    int a = 10;
    int *p1 = &a;
    char *p2 = p1;

    printf("%d\n",p1);
    printf("%d\n",p2);

    printf("%d\n",*p1);//10
    printf("%d\n",*p2);

    puts("----------------------");
    int c[10] = {
            1,2,3,4,5
    };
    //数组内容值默认为0
    printf("%d\n",c[5]);
    //数组名也是数字首地址
    printf("%d\n",c);
    //指针运算要根据指针的类型
    printf("%d\n",c+1);
    //
    printf("%d\n",*(c+2));
    *(c+2) = 0;
    printf("%d\n",*(c+2));

    puts("----------------------");
    int d = 10;
    reset(d);
    //函数独立性
    printf("%d\n",d);
    reset2(&d);
    //使用指针的方式突破函数壁垒
    printf("%d\n",d);

    //什么是返回值
    int e = add(3,5);
    printf("e = %d\n",e);
    int result = 0;
    //指针的方式计算结果
    add_by_point(3,5,&result);
    printf("result = %d\n",result);

}
void reset(int i){
    i = 0;
}
void reset2(int* p){
    *p = 0;
}

int add(int i,int j ){
    /*
     * 变量的生命周期
     *
     * */

    int q = i+j;
    return q;
}

void add_by_point(int x,int y,int *result){
    int r = (x + y);
    *result = r;
}
时间: 2024-10-12 22:38:42

指针复习的相关文章

C++ 指针复习

最近开始准备实习的笔试,复习了一下C++ 指针的内容 在计算机的每一个字节都有一个对应的地址: 很多书上用街道上的门牌比喻:地址使用数字来表示的,就和街道上的门牌号一样.但这样是不甚贴切的,因为存在着二级指针和一个数据存在多个地址等情况. 所以我觉得用字典前面的目录来比喻比较贴切. 在我们的程序中: 先举一个简单的例子,int *p ; 这里表明我们定义了一个指针,也就是说我们在字典的目录里定义了一条目录,但是它指向的内容(值),指向多少页(存放的地址)都是不确定的. int *pc ;//定义

黑马程序员_IOS开发_Objective-C学习笔记_指针复习

1.指针 上一篇我在分析我自己写的程序错误里面发现是指针的问题,我觉得有必要在复习一下指针,毕竟指针是C语言系列的难点. 指针是C语言的精髓,但是很多初学者往往对于指针的概念并不深刻,以至于学完之后随着时间的推移对指针的概念和使用越加模糊,感觉指针难以掌握,今天我就再回顾下指针的概念和使用. 2.什么是指针 指针的本质是存放变量地址的变量,简单的说变量p中存储的是变量a的地址,那么p就可以称为是变量a的指针,或者说p指向a.当我们访问a变量的时候其实是程序先根据a取得a对应的地址,再到这个地址对

指针复习-交换二个数

# include<stdio.h> //重点理解:1.指针:变量的地址.指针变量:存放地址的变量. void exchange_1(int a,int b)//只能在此函数实现变量交换,交换后的值不能返回到main函数中 { int t; t = a; a = b; b = t; } void exchange_2(int* a,int* b)//此函数只是交换了存放a,b地址的变量中的值. { int * t;//a,b表示a,b变量的地址 t = a; a = b; b = t; } v

C语言指针复习

本文来自https://blog.csdn.net/ccchenxi/article/details/83271212 第8章 指针8.1 指针变量1.指针变量定义及赋值:int a;  int *p=&a; 或 int a;  int *p;  p=&a;2.指针运算符:(1)取地址运算符& (2)取内容运算符* (结合性均为右至左)3.指针加1,不是纯加1,而是加一个所指变量的字节个数4.指针变量作为函数参数,例,交换函数swap():#include<stdio.h&g

数据结构复习之C语言指针与结构体

数据结构指针复习: #include <stdio.h> void main() { int a[5] = {8, 2, 3, 4, 5}; // a[3] == *(3+a) printf("%d\n", *(3+a)); // a[3] 4 printf("*a其实就是a[0]: %d\n", *a); // 8 // 地址是连续的 printf("%p\n", a+1); printf("%p\n", a+2

C++ 语法--唯一的难点const和复合类型

总结在底下. 1.const和引用 可以把引用绑定在常量上,称之为,对常量的引用.不能对那个引用赋值. 如: const int ci = 1024; const int &ri = ci; 解读:ri是对ci的引用.ri的const意思是视ci为变量. 对于常量,只能使用“对常量的引用”这个引用方式 int &ri = ci;是错误的,因为ci不能赋值,但是可能会对ri赋值从而影响const限定. 所以,他们(制定标准的人)创造了 对常量的引用 的 引用方式. 下面高能!!! 上面说:

传智播客C语言视频第二季(增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

?? 卷 backup 的文件夹 PATH 列表卷序列号为 000000F4 D4A8:14B0J:.│  1.txt│  2.txt│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│  ├─文档│  │      第1讲 C语言第一阶段.doc│  │      │  └─视频│          第1讲 C语言第一阶段.mp4│          ├─2传智播客_尹成_C语言从菜鸟到高手_第二章C语言跨平台HelloWorld-A│  ├─第10节 2.5.1-2.5.7C

C++ Boost 2 容器

C++ Boost 2 容器 在线文档:http://www.boost.org/doc/ 离线文档:解压Boost压缩包,浏览boost_1_62_0/boost_1_62_0/libs/libraries.htm#Containers 目录: Boost any 容器 引用与指针复习,引用并不会退化 boost.tuple,类似STL的pair键值对,但是tuple可以装10种不同的任意数据类型 tuple的创建,值操作要注意的 tuple.tie:创建一个所有元素类型为非const引用的t

结构体语法梳理2-指针与一维数组

结构体指针与结构体数组 1.1 指针复习 对于指针的理解,我们一方面从语法层面上理解,一方面编译器角度理解会发生什么事情. type  *p = value; p+i   的结果是 value+sizeof(type)*i 对于指针变量p ,*前面的type决定了 如何通过p存储的地址去访问内存. 比如 int  *p1 = 0x10; char *p2 = 0x10; double  *p3 = 0x10; *p1 从 0x10地址处访问四个字节,并且把这四个字节的数据当int类型来看. *p