刚开始学习C,同样有这个疑问,在网上查了一下,没有什么让人一目了然的解释。
用int *x作为例子。
既然int *x 只是定义了一个内存空间,保存一个内存地址,那么普通的int x应该也可以做到。
int num = 5;x 和 x1 同样保存的是 num 的内存地址,但是只有用了*声明的指针能够通过 *x 来访问 num .
printf("%p , %p", x ,x1) // 这一行会输出两个一样的内存地址。第二个变量名使用x1的原因是,当你尝试 printf 输出的时候,指针 *x 会强行覆盖普通的 x 。
C语言指针什么时候加星号什么时候不加
1、声明及定义一个指针时,需要用*表示标识符是一个指针。比如 int *p;定义一个指针,p是int *类型,这里的*主要说明变量是指针类型。2、作为间接访问运算符 int a = 2;int *p = &a;printf("%d\\n", p, *p);以上面的例子来说:p:是指针,是一个地址,它是int *类型。p:是指针所指内存...
...类型加个“星号”和不加有什么区别?就是指针
加了星号说明是指针类型,是指这个指针变量可以访问该类型的数据,指针也是一种变量,只不过它储存的是地址。一般变量储存的是数据。通过指针可以间接访问数据,它显示C语言的灵活性,优越性。我也刚学,看了很久,觉得挺有用的
C语言指针什么时候要带*什么时候不带*?
严格说来,指针什么时候都不带*。int *p,那个*是int的,不是p的。但为了在int下声明不是指针的变量,规定在每个指针变量前加一个*,以便编译器识别,这就使好多人误以为*是指针变量的了。
C语言指针什么时候要带*什么时候不带*?
1.声明的时候需要用*来表示声明的对象是一个指针。如:int* p;2.使用的指针的值的时候。如:printf("p = %d",*p);3.给指针赋值的时候。*p = 5;不带*的情况:1.使用指针的时候。如:int a = 0; p = &a;(p是int*)2.表示字符串首地址的时候不用*。如:char* ch = "hello"; pr...
C语言 指针 直接字符串变量前加*是什么怎么回事?没有提前定义啊
你是说fun函数的那个参数char *a 吗?用在这里表示fun函数调用时需要的参数是一个char类型的指针,也就是地址,这里可以理解为这是一个定义,定义一个char类型的局部指针变量,如main函数里面调用时,fun(s)将字符串的初始地址传入fun函数。
C语言 指针 直接字符串变量前加*是什么怎么回事?没有提前定义啊
加了*就表示这是指针(就是这个变量的存储地址,这是个char(字符)指针,就是只能存储字符类变量的地址)!这道题是传址调用, fun(s);就是把s[80]中的字符串的首地址传给形参a(这里a是字符型指针),之所以这样写,是为了让实参随着形参变而变!C语言:传值调用实参不能随着形参改变而改变,只有...
c语言中指针前面的星号,什么时候可以省去,什么时候又必须带上呢?_百度...
其实没那么复杂。主要是区别于在声明定义的时候,有的人会迷惑,要不要加 如下 int *p p=&x;\/\/此处明明是p=&x???,好往下看 int *p=&x\/\/其实在声明的时候这样也是可以的。但是这样写定义不明确。我们现在来总结一下,在定义的时候*号,只是一个说明符。意义是告诉你p是一个指针,而不是一...
C语言 函数指针调用时加星号与不加星号都行是为什么?
定义,因为它是定义。不带“*”,就无法区分是指针还是变量。&:叫做,取地址符。p1=&a;其实就是把a的地址取出来,赋给p1。你可以这么理解,*P1才是和变量a同一个等级的东西。&相当于降级取地址,那p1去掉星号*也相当于取地址。通俗来说*p本身就是为了地址操作而存在的,比如地址的交换,传递...
C语言中运用指针的时候什么时候可以省略*号
没有省略一说 定义时有 * 才能说明它是指针变量, * 不是变量名的组成部分 注意区别 “使用指针变量” 和 “使用指针变量指向的东西”
请问c语言中形参为指针是为设么实参有时加&有时不加,求高手解答。
至于加括号,有可能是碰到了运算符优先级的情况,比如结构体成员运算符样子和小数点相同,它就比*的优先级高,如果你想用*p,就必须用括号把它俩和右边隔开,像(*p).name这样。除此外还有函数指针,在声明时两对括号均不可省,如void (*p)();其他情况下比较复杂,可以参照字符指针跟字符数组的关系...