先看个例子
void add_array(int* a){
a += 2;
printf("ths pointer is increase %d \n",a);
}
//int add(int x, int y); // forward declaration using function prototype
int main()
{
int i = 0;
int* array = &i;
//printf("ths sum is");
//printf("ths sum is %d",i);
printf("ths pointer is %d \n",array);
add_array(array);
printf("after function the pointer is %d \n",array);
}
把指针作为函数的参数。 函数中指针的值发生了变化,但是在main函数中指针并没有变。 这是因为我们传入的参数是指针的形参,所以不会对原有指针的值产生变化。虽然一开始a和array值相同,但他们并不指向同一块内存。
如果改为:
void add_array(int** a){
*a += 2;
printf("ths pointer is increase %d \n",*a);
}
//int add(int x, int y); // forward declaration using function prototype
int main()
{
int i = 0;
int* array = &i;
//printf("ths sum is");
//printf("ths sum is %d",i);
printf("ths pointer is %d \n",array);
add_array(&array);
printf("after function the pointer is %d \n",array);
}
把指针作为实参传入的话,就会对main中的指针进行修改了。
分享到:
相关推荐
### C/C++ 函数指针的意义与应用 在C/C++编程中,函数指针是一种高级特性,它允许程序员处理函数的方式如同处理变量一般灵活。理解函数指针的意义及其用法,对于提升代码的可扩展性和灵活性至关重要。 #### 1. ...
### C/C++ 指针详解 #### 一、引言 在C/C++编程语言中,指针是一个非常强大的工具,但也常常让初学者感到困惑。本文将深入解析指针的各种概念及其应用,帮助读者彻底摆脱对指针的恐惧。 #### 二、理解复杂类型 ...
本文将详细介绍如何在 C/C++ 中将多维数组指针作为函数参数传递,並对相关知识点进行详细解释。 多维数组指针 在 C/C++ 中,多维数组指针是指向多维数组的指针变量。多维数组是一种复杂的数据结构,它由多个一维...
在学习C/C++编程语言的过程中,函数指针是高级编程技巧之一,它允许将函数作为参数传递给其他函数,或者在运行时动态决定调用哪个函数。函数指针本身是指向函数入口地址的指针,每个函数都有一个入口地址,这个地址...
通过深入学习和实践这些资料,开发者不仅能掌握C/C++指针的基本操作,还能了解如何在实际编程中安全有效地利用指针,提升程序设计能力。指针的理解和运用是成为一名熟练的C/C++程序员的关键步骤。
本资料集“C/C++指针学习 指针经验学习”旨在帮助读者深入理解和掌握这一核心技能。 首先,我们要明白指针的基本概念。在C/C++中,指针是一个变量,它存储的是另一个变量的地址,即内存中的位置。通过指针,我们...
《C/C++中文函数手册》是一份非常实用的编程资源,专为C和C++开发者设计,提供了详尽的函数库信息和速查指南。这份手册涵盖了C语言库函数和C++ API,对于初学者和有经验的程序员来说都是一个宝贵的参考资料。 C语言...
规则三:小心使用void指针类型按照ANSI(American National Standards Institute)标准,不能对void指针进行算法操作,即下列操作都是不合法的:void * pvoid;pvoid++; //ANSI:错误pvoid += 1; //ANSI:错误 3. void...
C/C++是两种广泛使用的编程语言,特别是在系统编程、嵌入式开发以及高性能计算领域。这份"c/c++帮助文档中文"提供了丰富的中文资源,帮助开发者深入理解和掌握这两种语言。 C语言是最早由Dennis Ritchie在贝尔实验...
在这个名为"C/C++指针的用法总结实例工程"的项目中,我们将深入探讨五种关键的指针相关概念,包括双重指针、引用、指针函数、指针数组以及数组指针,并通过实际的例子来帮助理解这些概念。 首先,让我们看看双重...
### C/C++函数指针教程 #### 一、函数指针简介 函数指针是C/C++编程语言中一个非常强大的特性,它允许程序将函数作为参数传递或从函数返回,从而实现高度灵活的编程模式。函数指针可以极大地提高代码的可重用性和...
除了指向数据的指针外,C/C++还支持**函数指针**,即指向函数的地址的指针。这允许程序员以动态的方式调用函数,提高了程序的灵活性。 ##### 示例分析 以下是一个使用函数指针的示例: ```c void add() { printf...
3. **安全处理指针**:C#中对指针操作有严格的安全限制,因此在调用DLL时,我们需要确保数据安全。对于传入的指针,我们可能需要先在C#中创建一个数组,然后通过`Marshal`类将数组的地址转换为`IntPtr`。例如: ```...
- **内存管理**:强调了正确的内存操作对程序稳定性的重要作用,比如避免内存泄漏、合理使用指针等。 - **函数设计**:提出了函数设计的原则,如参数的合理性、返回值的设计等,以增强函数的可靠性和灵活性。 - **...
6. **C库的C++封装**:C++对C库中的函数进行了封装,如头文件和分别对应C语言的和,使得C++代码能以更现代的方式来使用这些函数。 7. **C++11及后续版本的新特性**:从C++11开始,C++引入了一系列新特性,如lambda...
2. 指针函数:函数可以接收指针作为参数,或者返回一个指针。这在实现动态内存分配和回调函数时尤为重要。 3. 多级指针:可以定义指向指针的指针,如`int **pp`,用于处理嵌套结构或链表。 三、指针与数组 指针与...
通过深入学习这13份资料,你将能够掌握C/C++指针的精髓,无论是进行底层编程、优化算法,还是解决复杂的数据结构问题,指针都会成为你得力的工具。务必仔细研读,不断实践,指针虽小,其威力不容小觑。
例如,可以定义一个函数,该函数接受一个指向整数数组的指针,并通过函数指针进行处理: ```cpp void processArray(int* arr, int length, int (*process)(int)) { for (int i = 0; i ; i++) { arr[i] = process...
在IT领域,C/C++指针是至关重要的概念,它们是这两种编程语言的灵魂,赋予了开发者直接操作内存的强大力量。"CqxianPDF_C/C++指针_"这个标题暗示了一个专门针对C和C++指针的学习资料,可能是PDF格式的教程或手册,...
4. 指针运算:可以对指针进行加减运算,改变其指向的位置,但需注意数组指针和普通指针的差异。 5. 动态内存管理:使用new和delete操作符分配和释放内存,理解内存泄漏问题和智能指针的作用。 6. 指针作为函数参数:...