2020.9.23 第10节 指针进阶
一、指针函数
1.参数是指针
1.1 在子函数中,修改普通的实参的值,传的是普通实参的地址(一级指针),在函数中修改是一级指针
1.2 在子函数总,修改指针的实参的值,传的是指针实参的地址(二级指针),在子函数中修改是*二级指针
void modify(int* a)
{
*a = 1001;
}
void Swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int g_num = 9999;
void modifyPoint(int** p)
{
*p = &g_num;
}
int* returnNum()
{
return &g_num;
}
2.返回值是指针
2.1 不能返回局部变量地址
栈区:局部变量 函数参数 当使用完后系统会自动回收内存
int* returnPremer(int a)
{
return &a;
}
int* returnPremer2(int* a)
{
return a;
}
void initArray(int array[], int arrayNum)
{
for (int i = 0; i < arrayNum; i++)
{
array[i] = i;
}
}
void initArray2(int* array, int arrayNum)
{
for (int i = 0; i < arrayNum; i++)
{
array[i] = i;
}
}
void printArray(int* array, int arrayNum)
{
for (int i = 0; i < arrayNum; i++)
{
printf("%d\n", array[i]);
}
}
#include <stdio.h>
指针函数:
1.参数是指针
1.1 在子函数中,修改普通的实参的值,传的是普通实参的地址(一级指针),在函数中修改是*一级指针
1.1 在子函数总,修改指针的实参的值,传的是指针实参的地址(二级指针),在子函数中修改是*二级指针
2.返回值是指针
2.1 不能返回局部变量地址
void modify(int* a)
{
*a = 1001;
}
void Swap(int* a, int* b)
{
int temp = *a;
*a = *b;
*b = temp;
}
int g_num = 9999;
void modifyPoint(int** p)
{
*p = &g_num;
}
int* returnNum()
{
return &g_num;
}
int* returnPremer(int a)
{
return &a;
}
int* returnPremer2(int* a)
{
return a;
}
void initArray(int array[], int arrayNum)
{
for (int i = 0; i <