C语言的指针 &符号是什么意思?

#include <stdio.h>

void func(int *pvalue); 

int main(void)
{
int value = 10;
printf("&value = %p\n",&value); 
func(&value); /* 这里的&是什么意思?? */
printf("value = %d\n",value);
return 0;
}

void func(int *pvalue) 
{
printf("pvalue = %p\n",pvalue); /* 这里也是把pvalue的地址给打印出来,为什么在pvalue前没&符号了?? */
*pvalue = 100; 
return;
}

守着星空守着你
浏览 1096回答 3
3回答

红糖糍粑

& 是取地址符号在函数传参过程中可以进行修改传过去的地址所指定的值,换句话说就是函数参数里的局部变量与外部的变量是共享的

一只名叫tom的猫

给你一个程序,你可以看一下,希望你可以明白#include<stdio.h>int main(){ int value = 5; int *pvalue = &value; int **ppvalue = &pvalue; printf("&value = %d\n",&value); printf("pvalue = %d\n",pvalue); printf("ppvalue = %d\n",ppvalue); printf("*ppvalue = %d\n",*ppvalue); printf("**ppvalue = %d\n",**ppvalue); return 0;} 结果:&value = 1337974940pvalue = 1337974940ppvalue = 1337974928*ppvalue = 1337974940**ppvalue = 5

慕神8447489

C语言中$不是操作符也不能被用来定义标识符(Java中倒是可以)。C语言历史上是为设计Unix操作系统而发明的。所以个人估计不用$是因为防止和Unix-like系统中命令提示符$混淆($在Shell中有其它用途)。关于C语言的相关用法,关联性比较大的是makefile中的宏定义,$(...)表示对一个宏的引用,括号中为宏名(如果宏名是单字符则括号可省略)。如果使用IDE,编译系统可能会把环境变量指定为预设的宏供用户使用——这样的宏用来控制编译源文件和生成目标文件的路径很方便。makefile配合make工具使用,用来在编译过程中控制文件的依赖性。虽然本身不是C语言的必要组成部分,但是事实上的C工程编译过程中基本都要用到它(VC里面用的是代用品Microsoft NMake)。makefile的语法很复杂,
打开App,查看更多内容
随时随地看视频慕课网APP