A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 77媛儿 中级黑马   /  2014-3-20 09:36  /  1274 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

指针与函数参数
void test(char *name)
{
        char *name2=name;
        char *name2="rose"
}
int main
{
        char *name="jack";
        test(name);
        printf("%s",name) //打印结果是否应该还是jack
}
看到oc里老师讲到指针内存的时候,我发现把指针传入函数之后,其实是新开辟了一个指针存储传入的地址,如果把新开辟的指针的地址覆盖了,在使用这个指针不会影响原来的对象,不知道在c语言中这么表现对不对

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

3 个回复

倒序浏览
char *name="jack";字符串“jack”是一个字符串常量,里面的字符不能被修改
printf("%s",name) ;还是打印name指向的存储空间的内容  结果应该还是jack

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
牧之 发表于 2014-3-20 12:41
char *name="jack";字符串“jack”是一个字符串常量,里面的字符不能被修改
printf("%s",name) ;还是打印n ...

哈哈 忘了 是指针定义是字符串常量,那如果是
void test(int *p)
{
        int *p1=&name;
        int *p1=10;
}
int main
{
        int *p=5;
        test(&p);
        printf("%d",*p) //打印结果是否应该还是5
}
回复 使用道具 举报
是可以的。所有的参数传递实际上都是传值。如果传递的参数是一个指针。那么复制该指针的一个副本传递。该指针的值是一个地址。副本的内容当然也就是保存了一个相同的地址。所以改变地址的内容当然可以!
ps:楼主的代码错误好多。

评分

参与人数 1技术分 +1 收起 理由
jing迪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马