多级指针不能一次性赋值,需要每一级每一级赋值。
例子:
在C++中,char**
是指向字符指针的指针,通常用来表示字符串数组或多维字符数组。为char**
变量赋值需要分配内存,并确保正确处理内存释放。
#include <iostream>
#include <cstring>
int main() {
// 初始化 char** 变量
char** strs = nullptr;
// 分配空间存储三个字符串
strs = new char*[3];
// 为每个字符串分配空间
for (int i = 0; i < 3; ++i) {
strs[i] = new char[10];
}
// 为字符串赋值
strcpy(strs[0], "Hello");
strcpy(strs[1], "World");
strcpy(strs[2], "Test");
// 打印结果
for (int i = 0; i < 3; ++i) {
std::cout << strs[i] << std::endl;
}
// 释放内存
for (int i = 0; i < 3; ++i) {
delete[] strs[i];
}
delete[] strs;
return 0;
}
#include <iostream>
#include <cstring>
int main() {
char*** p = new char**[1]; // 分配指针的指针的数组
p[0] = new char*[1]; // 分配指向字符的指针的数组
p[0][0] = new char[5]; // 分配字符的空间
strcpy(p[0][0], "test"); // 赋值
std::cout << p[0][0] << std::endl; // 输出结果
// 清理内存
delete[] p[0][0];
delete[] p[0];
delete[] p;
return 0;
}
void char_arry() {
char c1[10] = "char";
//* 一级指针赋值
char* pc1 = c1;
//** 二级指针赋值
char** pc2 =NULL;
char* arrc[3] = { c1,c1,c1 };
pc2 = arrc;
//*** 三级指针赋值
char*** pc3 = NULL;
char** arrc3[3] = { pc2,pc2,pc2 };
pc3 = arrc3;
//**** 四级指针赋值
char**** pc4 = NULL;
char*** arrc4[4] = { pc3 ,pc3 ,pc3,pc3 };
pc4 = arrc4;
}
int类型多级指针
void mutilpoint_int()
{
int num = 1234;
int* pnum1 = #
int**pnum2 = &pnum1;
int ***pnum3 = &pnum2;
}