有关c语言的指针赋值问题,急等

来源:百度知道 编辑:UC知道 时间:2024/06/11 14:55:12
我想把指针所指向的内容赋值给一个指针数组中的某一个元素,该怎么办呢?在线急等。 char *partition_string=(char *)malloc(100);
static char *dir[100];

dir[len] = partition_string;//这样的话dir[len] 里边的内容并不向我想像的那样,dir[len]伴随partition_string的不同而不同,而是dir[len]总是最后一次得到的partition_string的结果
为什么呢?

直接写:
char ** dir = (char**)malloc(sizeof(char*) * 100);
memset(dir, 0, sizeof(char*) * 100); //清零
dir[i] = (char*)malloc(100);
memset(dir[i], 0, 100); //清零
就行。

“我想把指针所指向的内容赋值给一个指针数组中的某一个元素”

dir[len] = partition_string;

你说的话跟你写的语句完全不是一回事啊。 你既然知道右边应该是指针“指向的内容” , 为啥你就写个指针不写*呢?

dir[len]是代表dir这个数组的最后一个元素

char *partition_string=(char *)malloc(100);
static char *dir[100];

你的所谓的“指针所指向的内容”即char*型指针partition_string所指向的内容为char型
而dir数组的元素为char*型
所以将指针所指向的内容赋给指针数组中的某一个元素是将char型赋给char*型。所以说你真的明白自己想做什么吗?如果按你的字面意思,程序应为:
dir[len] = (char *)*partition_string;
但是这样做没有意义。

或者你应该这样:
char *partition_string=(char *)malloc(100);
static char dir[100];//dir的元素为char
dir[len] = *partition_string;

但是这样就不是所谓的“指针数组”了

如果完全按照你的三行程序来理解,你做了:“指针变量的值赋给一个指针数组中的某一个元素”

另外dir[len]这样的表达式让人误解。你应该用dir[i]这类标示符,前者让人以为dir是一个长度为len个的数组