文章目录
先说结论
和其他类型的变量一样,指针传入函数时,会为其创建一个副本,在函数中改变指针,并不会对函数外部产生影响,此时需要使用指向指针的指针。
#include <cstdio>
void Test_ptr(int* numbers)
{
printf("函数中的指针存储地址:%p\n",&numbers);
printf("函数中的指针指向地址:%p\n",numbers);
printf("函数中的指针指向的值:%d\n",*numbers);
numbers++;
printf("函数中处理后:%d\n",*numbers);
}
void Test_ptr_ptr(int** numbers)
{
printf("%d\n",*(*numbers));
(*numbers)++;
printf("%d\n",*(*numbers));
}
// ====================测试代码====================
int main()
{
int numbers[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
//测试指针
printf("测试指针:\n");
printf(" 传入函数前:\n");
printf("main的指针存储地址:%p\n",&numbers);
printf("main的指针指向地址:%p\n",numbers);
printf("main的指针指向的值:%d\n",*numbers);
Test_ptr(numbers);
printf(" 传入函数后:\n");
printf("main的指针存储地址:%p\n",&numbers);
printf("main的指针指向地址:%p\n",numbers);
printf("main的指针指向的值:%d\n",*numbers);
//测试指向指针的指针
printf("\n\n测试指向指针的指针:\n");
int *p=numbers;
int**test_ptr;
test_ptr=&p;
Test_ptr_ptr(test_ptr);
printf("%d\n",*(*test_ptr));
return 0;
}
输出结果如下: