问一个关于 指针赋值 的问题

药不能停啊 2008-02-22 06:02:15
本人代码
// testPoint.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <stdlib.h>
#include <string.h>

void FuZhi(char *argP)
{
argP = "abc";
}

int main(int argc, char* argv[])
{
char *p = NULL;
char str[10];

// memset(str, 10, sizeof(char));
printf("the address of str is %x\n", &str);
p = str;


// p = (char*)malloc(10*sizeof(char));
printf("&p = %x\n", &p);
printf("*p = %x\n", p);

FuZhi(p);

printf("str = %s\n", str);
printf("p = %s\n", p);
return 0;
}





调试的结果是下面:
the address of str is 12ff70
&p = 12ff7c
*p = 12ff70
str = フフフフフフフフフフフフp
p = フフフフフフフフフフフフp
Press any key to continue


想问:
问什么str 和指针p不等于 abc
...全文
118 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
knift1128 2008-02-22
  • 打赏
  • 举报
回复
一切参数都是传值~包括指针~!这里应该是传指向指针的指针,或指向引用的指针
ysuliu 2008-02-22
  • 打赏
  • 举报
回复
很明显啊,你的FuZhi()是传值的,你想改变p的内容,必须传地址啊。

用引用吧
chary8088 2008-02-22
  • 打赏
  • 举报
回复
void FuZhi(char* argP)
{
strcpy(argP, "abc");
}
visame 2008-02-22
  • 打赏
  • 举报
回复

void FuZhi(char *argP)// 原因很简单,值传递(拷贝)而非引用传递
{
argP = "abc";
}
除了8楼的方法,还可以这样
void FuZhi(char *&argP)//加一个&此处改为引用
{
argP = "abc";
}
guzhilei1986 2008-02-22
  • 打赏
  • 举报
回复
学习
星羽 2008-02-22
  • 打赏
  • 举报
回复



void FuZhi(char* argP)
{
strcpy(argP, "abc");
}
星羽 2008-02-22
  • 打赏
  • 举报
回复

小日本原来没有 烫 字
ssdx 2008-02-22
  • 打赏
  • 举报
回复
c是传值的,如果如你原来那样写,只是传入一个指针的拷贝。栈上的指针拷贝指向分配在静态区“abc”,但是函数外的指针未改变。
药不能停啊 2008-02-22
  • 打赏
  • 举报
回复
为什么要这样
我在发帖前试验过,可以的
只是目前这个代码为什么不可以
我想知道的详细点
ssdx 2008-02-22
  • 打赏
  • 举报
回复
函数改成传指针的指针
char **p
药不能停啊 2008-02-22
  • 打赏
  • 举报
回复
我用的是日文的操作系统
不过vc是英文的
药不能停啊 2008-02-22
  • 打赏
  • 举报
回复
恩,这都被你发现了
兄弟强啊
healer_kx 2008-02-22
  • 打赏
  • 举报
回复
日语编程啊?

64,179

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧