培训学习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
分享到:
相关推荐
【C语言复习】 C语言是一种基础且强大的编程语言,它为初学者提供了深入理解计算机底层工作原理的机会。在复习C语言时,以下是一些关键知识点: 1. **数据类型**:C语言支持基本的数据类型,如`int`, `unsigned ...
C语言中的函数指针是其强大特性的体现之一,它允许我们传递函数作为参数,将函数作为返回值,以及实现回调机制。理解函数指针的关键在于掌握如何...因此,掌握正确的解析和使用函数指针的技巧对于C程序员来说是必要的。
根据给定的标题、描述及部分内容,以下是针对C语言指针部分的重要知识点的详细解析: ### 基本概念 #### 指针与指针变量 - **指针**: 在C语言中,指针是一种特殊的变量,它存储的是其他变量的内存地址,即变量在...
【指针操作】是C语言中的核心概念,它允许我们直接操作内存地址,进而实现高效的数据处理和灵活的编程技巧。下面将详细讲解实验中涉及的指针知识点: 1. **指针变量的引用和操作**: 指针变量存储的是另一个变量的...
指针变量作为函数参数(复习) 函数的指针和指向函数的指针变量 指针数组和指向指针的指针 堆内存的使用(指针数组实现动态数组) main函数的命令行参数
学习C语言指针,需要重点理解地址、指针变量的概念,以及如何定义、赋值和引用指针。通过指针可以实现更灵活的数据操作,包括动态内存管理、函数参数传递和结构体操作等。熟悉这些概念和操作是成为熟练的C语言程序员...
以下是对C语言指针的详细总结: 1. **指针概念**: 指针是存储内存地址的变量,它保存了一个变量的内存位置。在C语言中,使用`*`符号来声明一个指针变量,而`&`运算符用于获取变量的地址。例如,`int *pi1`声明了...
指针是一种基本的数据类型,在 C 语言中,指针是用来存储内存地址的变量。指针的概念可以分为以下几个方面: 1. 内存和地址 内存是计算机中的一块存储区域,用于存储数据。内存被划分为一个个单元,每个单元的大小...
当我们使用字符串字面量时,C 语言会将其存储在单独的内存区域中,并将其地址赋给指针变量。需要注意的是,字符串字面量是不可修改的,因为它是一个常量字符串。 例如,str3 和 str4 指向的是同一个常量字符串,str...
本篇文章主要讨论了C语言中的指针概念,包括数组名的理解、使用指针访问数组、数组传参的本质、冒泡排序、 二级指针、指针数组和指针数组模拟二维数组等。 1. 数组名的理解 数组名通常情况下是数组首元素的地址,...
虽然这里只提供了"c-辅导资料",但这份资料应当涵盖了这些重要概念的讲解和实例,可以帮助学习者逐步深入理解C语言和提高解题能力。在实际学习过程中,不断实践、总结和反思,才能真正掌握这些知识,并将其转化为...
通过以上复习纲要的梳理,我们可以看到C语言的基本构成元素包括数据类型、变量、控制结构、流程控制、函数、数组与字符串以及指针等内容。这些知识点是学习C语言的基础,也是后续深入学习高级编程技术的重要基石。...
在C语言中,指针是程序设计中的一个重要概念,它提供了对内存地址的直接访问,使得我们可以高效地处理数据和实现复杂的数据结构。本篇教程课件主要涵盖了以下几个关于指针的知识点: 1. **指针的概念**: 指针是一...
【知识点详解】 1. 指针的基本概念:指针是C语言中的一种特殊类型,它存储了变量的内存地址。...这些知识点涵盖了C语言中的基本指针操作、数组与指针的关系、字符串处理以及输入输出等方面,是理解和编写C程序的基础。
内容概要:本文主要针对C语言期末复习,详细讲述了数据类型(如整型、浮点型)、运算符优先级、控制结构(如if-else、switch-case)、指针与内存管理、结构体与文件操作等知识点,并通过具体示例进行了说明。...
指针习题(C/C++考试复习必备),C++语言指针内容很难,精选题目供参考学习
总的来说,这个资料包提供了全面的C/C++指针相关的面试和笔试题目,覆盖了从基础到高级的各种场景,是学习和复习指针知识的理想资源。通过深入学习和实践,不仅可以增强编程能力,也有助于在IT行业的竞争中占据优势...
本文档提供了一系列实践题,旨在帮助新手或想复习指针的开发者提高C语言指针方面的技能。通过这些题目,可以帮助大家更好地理解和掌握指针的概念和应用。 一、思考题 1. 若有语句 int *point, a = 4; 和 point = &...
"C语言程序设计基础 & 期末复习"这个主题涵盖了C语言的基本概念、语法结构以及在准备期末考试时的重点复习内容。 一、C语言基本概念 C语言由丹尼斯·里奇在贝尔实验室为UNIX操作系统开发,它是一种结构化编程语言,...