我想提供一個函數,然後用東西填充它的字符指針,以便調用函數可以使用它。因爲它總是給我奇怪的東西在調用函數中我寫了什麼,我做了簡單的表示:如何通過一個指針並分配堆上的空間
#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 - 看我的編輯:)你是在正確的方向。 –