我在動態(tài)分配的內(nèi)存里保存了另一個變量的地址,然后再打印這個動態(tài)分配的內(nèi)存和另一個變量地址。 group2里面 base和p3的地址是一樣的,這個我理解,可是為什么 group1里的 buf和 p不一樣呢?#include <stdio.h>int main(int argc, char const *argv[]){ // group1
char buf[]="hello"; char *p=(char *)malloc(sizeof(char *));
*p=buf; printf("buf=%p\n", buf); printf("*p=%p\n", *p);
// group2
int base=1; int *p3=(int *)malloc(sizeof(int *));
*p3=&base; printf("base=%p\n", &base); printf("*p3=%p\n", *p3);
return 0;
}
1 回答

臨摹微笑
TA貢獻1982條經(jīng)驗 獲得超2個贊
你有兩個選擇:
1 使用int * 指針
指針本質(zhì)上是一個可以使用"整數(shù)"表示的內(nèi)存地址值。所以需要一個int的指針,而不是一個char的指針, 嚴格來講應該使用 "uintptr_t" 類型,這里使用 "int *" 也行。
int *p = (int *)malloc(sizeof(int *));
*p 就是一個整數(shù),可以保存 "char *" 指針的值,你用的是 'char *',地址值被截斷了。
2 使用指針的指針
char **p = (char **)malloc(sizeof(char **));
=========
其實你這里的做法是 "不正確的"(注意看編譯警告), 你應該都使用指針的指針來做。
- 1 回答
- 0 關(guān)注
- 517 瀏覽
添加回答
舉報
0/150
提交
取消