为了账号安全,请及时绑定邮箱和手机立即绑定

【新手求助】关于c语言指针操作的问题

【新手求助】关于c语言指针操作的问题

C++
红糖糍粑 2018-10-24 18:52:30
我在动态分配的内存里保存了另一个变量的地址,然后再打印这个动态分配的内存和另一个变量地址。 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条经验 获得超2个赞

你有两个选择:

1 使用int * 指针
指针本质上是一个可以使用"整数"表示的内存地址值。所以需要一个int的指针,而不是一个char的指针, 严格来讲应该使用 "uintptr_t" 类型,这里使用 "int *" 也行。

int *p = (int *)malloc(sizeof(int *));

*p 就是一个整数,可以保存 "char *" 指针的值,你用的是 'char *',地址值被截断了。

2 使用指针的指针

char **p = (char **)malloc(sizeof(char **));

=========
其实你这里的做法是 "不正确的"(注意看编译警告), 你应该都使用指针的指针来做。


查看完整回答
反对 回复 2018-10-24
  • 1 回答
  • 0 关注
  • 497 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信