`
cxh116
  • 浏览: 76372 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
社区版块
存档分类
最新评论

复习C指针

    博客分类:
  • C
阅读更多
培训学习C已经过了两三年了,当初指针是简单的讲了一下,内存管理讲都没有讲.
  几年的工作下来,感觉基础越来越重要,对编程思想理解深度很有帮助.
看<C Primer Plus>,写了一段小代码来验证自己的对指针的理解是否正确
环境: gcc version 4.4.5 (Debian 4.4.5-8)

#include <stdio.h>

void s(int *i, int *j); //交换地址
void s2(int *i, int *j); //修改内存地址指向区块的值
void p(int i,int j); //打印值
void pp(int *i, int *j);  //打印地址

int main (int argc, char const* argv[])
{
  int i = 0,j = 1;
  p(i,j);
  pp(&i, &j);
  s(&i,&j);
  p(i,j); //值不变,i j的地址不变, 为什么不变,据我现在的理解,通过指针传过去的,能改变的只是指针所指向的内存区域,想改变指针变量的地址,我想只能在i j的本地变量的作用域内通过等号赋值的方式
  pp(&i, &j);
  s2(&i, &j);
  p(i,j);
  pp(&i, &j); //值变, i j 的地址不变
  return 0;
}

void s(int *i, int *j)
{
  int tmp;
  tmp = *i;
  i = j;
  j = &tmp;
  printf("address change\n");
  p(*i,*j);
  pp(i, j);
}

void s2 (int *i, int *j)
{
  int tmp;
  tmp = *i;
  *i = *j;
  *j = tmp;
}

void p (int i, int j)
{
  printf("%d -- %d \n", i, j);
}

void pp (int *i, int *j)
{
  printf("%p -- %p \n", i, j);
}



运行结果:
引用
0 -- 1
0xbfe2fccc -- 0xbfe2fcc8
address change
1 -- 0
0xbfe2fcc8 -- 0xbfe2fc9c
0 -- 1
0xbfe2fccc -- 0xbfe2fcc8
1 -- 0
0xbfe2fccc -- 0xbfe2fcc8
0
1
分享到:
评论

相关推荐

    复习C语言可以帮助初学者复习C语言

    【C语言复习】 C语言是一种基础且强大的编程语言,它为初学者提供了深入理解计算机底层工作原理的机会。在复习C语言时,以下是一些关键知识点: 1. **数据类型**:C语言支持基本的数据类型,如`int`, `unsigned ...

    C语言函数指针复习小结

    C语言中的函数指针是其强大特性的体现之一,它允许我们传递函数作为参数,将函数作为返回值,以及实现回调机制。理解函数指针的关键在于掌握如何...因此,掌握正确的解析和使用函数指针的技巧对于C程序员来说是必要的。

    复习C语言应注意的几个方面(之四)——针对CCT C语言指针部分

    根据给定的标题、描述及部分内容,以下是针对C语言指针部分的重要知识点的详细解析: ### 基本概念 #### 指针与指针变量 - **指针**: 在C语言中,指针是一种特殊的变量,它存储的是其他变量的内存地址,即变量在...

    C语言复习题指针操作

    【指针操作】是C语言中的核心概念,它允许我们直接操作内存地址,进而实现高效的数据处理和灵活的编程技巧。下面将详细讲解实验中涉及的指针知识点: 1. **指针变量的引用和操作**: 指针变量存储的是另一个变量的...

    C语言课件—指针

    指针变量作为函数参数(复习) 函数的指针和指向函数的指针变量 指针数组和指向指针的指针 堆内存的使用(指针数组实现动态数组) main函数的命令行参数

    c语言指针讲义复习资料.pdf

    学习C语言指针,需要重点理解地址、指针变量的概念,以及如何定义、赋值和引用指针。通过指针可以实现更灵活的数据操作,包括动态内存管理、函数参数传递和结构体操作等。熟悉这些概念和操作是成为熟练的C语言程序员...

    C语言指针经典总结(复习利器)

    以下是对C语言指针的详细总结: 1. **指针概念**: 指针是存储内存地址的变量,它保存了一个变量的内存位置。在C语言中,使用`*`符号来声明一个指针变量,而`&`运算符用于获取变量的地址。例如,`int *pi1`声明了...

    【C语言/知识梳理/期末复习】指针(一)思维导图

    指针是一种基本的数据类型,在 C 语言中,指针是用来存储内存地址的变量。指针的概念可以分为以下几个方面: 1. 内存和地址 内存是计算机中的一块存储区域,用于存储数据。内存被划分为一个个单元,每个单元的大小...

    【C语言/知识梳理/期末复习】指针(三)

    当我们使用字符串字面量时,C 语言会将其存储在单独的内存区域中,并将其地址赋给指针变量。需要注意的是,字符串字面量是不可修改的,因为它是一个常量字符串。 例如,str3 和 str4 指向的是同一个常量字符串,str...

    【C语言/知识梳理/期末复习】指针(二)思维导图

    本篇文章主要讨论了C语言中的指针概念,包括数组名的理解、使用指针访问数组、数组传参的本质、冒泡排序、 二级指针、指针数组和指针数组模拟二维数组等。 1. 数组名的理解 数组名通常情况下是数组首元素的地址,...

    C语言蓝桥杯复习资料习题

    虽然这里只提供了"c-辅导资料",但这份资料应当涵盖了这些重要概念的讲解和实例,可以帮助学习者逐步深入理解C语言和提高解题能力。在实际学习过程中,不断实践、总结和反思,才能真正掌握这些知识,并将其转化为...

    c语言复习纲要 用于大一谭浩强版本复习

    通过以上复习纲要的梳理,我们可以看到C语言的基本构成元素包括数据类型、变量、控制结构、流程控制、函数、数组与字符串以及指针等内容。这些知识点是学习C语言的基础,也是后续深入学习高级编程技术的重要基石。...

    C语言教程课件Ch10指针复习.ppt

    在C语言中,指针是程序设计中的一个重要概念,它提供了对内存地址的直接访问,使得我们可以高效地处理数据和实现复杂的数据结构。本篇教程课件主要涵盖了以下几个关于指针的知识点: 1. **指针的概念**: 指针是一...

    C语言第七章复习题7 指针.doc

    【知识点详解】 1. 指针的基本概念:指针是C语言中的一种特殊类型,它存储了变量的内存地址。...这些知识点涵盖了C语言中的基本指针操作、数组与指针的关系、字符串处理以及输入输出等方面,是理解和编写C程序的基础。

    指针习题(C/C++考试复习必备)

    指针习题(C/C++考试复习必备),C++语言指针内容很难,精选题目供参考学习

    C C++ 指针 面试题 笔试题

    总的来说,这个资料包提供了全面的C/C++指针相关的面试和笔试题目,覆盖了从基础到高级的各种场景,是学习和复习指针知识的理想资源。通过深入学习和实践,不仅可以增强编程能力,也有助于在IT行业的竞争中占据优势...

    C指针练习.docx

    本文档提供了一系列实践题,旨在帮助新手或想复习指针的开发者提高C语言指针方面的技能。通过这些题目,可以帮助大家更好地理解和掌握指针的概念和应用。 一、思考题 1. 若有语句 int *point, a = 4; 和 point = &...

    C语言程序设计基础 & 期末复习

    "C语言程序设计基础 & 期末复习"这个主题涵盖了C语言的基本概念、语法结构以及在准备期末考试时的重点复习内容。 一、C语言基本概念 C语言由丹尼斯·里奇在贝尔实验室为UNIX操作系统开发,它是一种结构化编程语言,...

    数据结构之指针复习ppt

    指针是C/C++等语言中的一种特殊类型,它存储的是内存地址,即内存中某个数据单元的编号。理解指针对于掌握高级程序设计技巧至关重要。 首先,我们要明白地址和指针的基本概念。当我们在程序中定义一个变量时,...

Global site tag (gtag.js) - Google Analytics