指针函数用法

动态内存分配:指针函数可以用来动态分配内存空间,并返回指向该空间的指针。这样可以在程序运行时根据需要动态地分配内存,避免浪费内存空间。

int* getArray(int size) {
    int* arr = (int*)malloc(size * sizeof(int));
    for (int i = 0; i < size; i++) {
        arr[i] = i + 1;
    }
    return arr;
}
int main() {
    int* arr = getArray(5);
    for (int i = 0; i < 5; i++) {
        printf("%d ", arr[i]);
    }
    free(arr);
    return 0;
}

在这个例子中,我们定义了一个指针函数getArray,它接受一个整型参数size,并返回一个指向整型数组的指针。在main函数中,我们调用getArray函数并将返回的指针赋值给arr变量。然后我们使用for循环遍历arr数组并打印每个元素的值。最后我们使用free函数释放arr指向的内存空间。可以看到,指针函数getArray成功地返回了一个指向整型数组的指针,并且我们可以通过该指针访问数组中的元素。由于指针函数可以动态地分配内存空间,因此我们可以根据需要动态地分配内存,避免浪费内存空间。

指针函数可以用来返回指向结构体的指针,这样可以方便地创建和操作结构体对象

typedef struct {
    int id;
    char name[20];
    int age;
} Person;

Person* createPerson(int id, char* name, int age) {
    Person* p = (Person*)malloc(sizeof(Person));
    p->id = id;
    strcpy(p->name, name);
    p->age = age;
    return p;
}

void printPerson(Person* p) {
    printf("ID: %d\n", p->id);
    printf("Name: %s\n", p->name);
    printf("Age: %d\n", p->age);
}

int main() {
    Person* p1 = createPerson(1, "Alice", 20);
    Person* p2 = createPerson(2, "Bob", 25);
    printPerson(p1);
    printPerson(p2);
    free(p1);
    free(p2);
    return 0;
}

在这个例子中,我们定义了一个结构体Person,它包含三个成员变量id、name和age。然后我们定义了一个指针函数createPerson,它接受三个参数id、name和age,并返回一个指向Person结构体的指针。在createPerson函数中,我们使用malloc函数动态分配内存空间,并将参数赋值给结构体的成员变量。最后我们返回指向该结构体的指针。在main函数中,我们分别调用createPerson函数创建两个Person对象,并使用printPerson函数打印每个对象的成员变量。最后我们使用free函数释放每个对象所占用的内存空间。
可以看到,指针函数createPerson成功地返回了一个指向Person结构体的指针,并且我们可以通过该指针访问结构体的成员变量。由于指针函数可以动态地分配内存空间,因此我们可以方便地创建和操作结构体对象。

你可能感兴趣的:(c++,java,开发语言)