我想提供一个函数,然后用东西填充它的字符指针,以便调用函数可以使用它。因为它总是给我奇怪的东西在调用函数中我写了什么,我做了简单的表示:如何通过一个指针并分配堆上的空间
#include <stdio.h>
#include <stdlib.h>
void bla(char *t)
{
t = (char*) malloc(5);
if (t != 0) {
t[0] = 'h';
printf("%c\n", t[0]);
}
}
int main(int argc, char **argv)
{
char b[10];
bla(b);
printf("%c\n", b[0]);
return 1;
}
我不太清楚,如果有事情做的是C已通过参数的副本。我需要将指针传递给指针吗还是有更好的解决方案?
编辑:
对不起,但我没有得到它。你能看看这个例子:
#include <stdio.h>
#include <stdlib.h>
void blub(char **t)
{
printf("%d\n", *t);
*t = (char*) malloc(sizeof(char) * 5);
*t[0] = 'a';
*t[1] = 'b';
printf("%d\n", *t);
printf("%d\n", *t[0]);
printf("%d\n", *t[1]);
}
int main(int argc, char **argv)
{
char *a;
blub(&a);
printf("%d\n", a);
printf("%d\n", a[0]);
printf("%d\n", a[1]);
return 1;
}
输出如下:
./main
6154128
140488712
97
98
140488712
97
0 <== THIS SHOULD BE 98 AS ABOVE!?
为什么我得到的功能blafu 98和主要它是一个空指针?我很困惑:/
该代码没什么意义... –
不要忘记释放你的记忆! – Nick
@pluckyDuck - 看我的编辑:)你是在正确的方向。 –