C语言指针,int a=1; int *p; 其中p=&a和*p=&a有什么区别?p的值是否相同?

如题所述

指针本质就是存储内存地址的一个变量。所以指针可以指向某个变量在内存中存储的单元格嘛。变量去访问单元格最后也是编译器通过变量名和地址一一对应去查找的。而指针里面直接存储的就是地址,所以直接可以访问地址所对应的单元格。

不知道楼主说的是说明情况。所以几种可能的都说一下:

测试代码
#include "stdio.h"
#include "conio.h"

main()
{
int a=1;
int *p=&a;
int *q,*r;
q=&a;
*r=&a;
printf("p=%d,q=%d,r=%d",p,q,r);
getch();
}

int *p=&a ; 这是很标准的,把a的地址个p指针变量。
int *q;q=&a;这也是很标准的。定义一个指针变量,然后将a的地址赋值给她。
int *r; *r=&a; 首先r是个指针变量,但是r指向内存中那个单元格呢?r没有赋初值就开始用了。这是很严重的。r是个游离态的指针。 *r表示取出r对应的那个地址中的值。r都没有指向一个具体的单元格,如何去取值啊。
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-14
p=&a 是将变量a的地址赋给指针p本身的存储单元
*p=&a 是将a的地址赋给指针p所指向的内存单元
第二种由于没有对指针初始化,*p不知道指向什么单元(有可能是重要的系统单元),所以这样的操作很危险。
第2个回答  2012-04-14
不相同,p是指该指针的地址,向它赋值是将p指向另一个地址,而*p是指向p地址的指针,它是可以直接赋值的。希望可以帮助你~~~
第3个回答  2012-04-14
p=&a,表示p指向a ,所以p的值为1
*p=&a,是把a的地址的值给*p,p值是不同的
第4个回答  2012-04-14
int *p中其一般形式为:
类型说明符 *变量名;
其中,*表示这是一个指针变量,变量名即为定义的指针变量名,类型说明符表示本指针变量所指向的变量的数据类型。
例如: int *p1;
表示p1是一个指针变量,它的值是某个整型变量的地址。或者说p1指向一个整型变量。至于p1究竟指向哪一个整型变量,应由向p1赋予的地址来决定。

p就是地址。*p是一个指针型变量 *p=&a错误

...*p; 其中p=&a和*p=&a有什么区别?p的值是否相同?
int *p=&a ; 这是很标准的,把a的地址个p指针变量。int *q;q=&a;这也是很标准的。定义一个指针变量,然后将a的地址赋值给她。int *r; *r=&a; 首先r是个指针变量,但是r指向内存中那个单元格呢?r没有赋初值就开始用了。这是很严重的。r是个游离态的指针。 *r表示取出r对应的那个地址...

c语言指针求问 看如下两个表示的区别 1 int a=1, *p; p=&a; 2int
一样的,只是p指针的初始化方式不同而已,1、的是在定于的时候初始化 2、的是在定于后初始化 指针本质就是存储内存地址的一个变量。所以指针可以指向某个变量在内存中存储的单元格嘛。变量去访问单元格最后也是编译器通过变量名和地址一一对应去查找的。而指针里面直接存储的就是地址,所以直接可以访问...

int *p=&a;与int a;int *p;p=&a有什么区别? 为什么一个是*p=&a,一个...
呵呵 ,前面int *p=&a 之前肯定先定义过变量a (int a)了 所以 定义整型指针变量p的时候直接把a的地址交给了p;后面也是这个意思 区别在于是不是定义p的同时就给p赋初值 懂不?

c++,请问*p=&a与p=&a(p是指针)有什么区别
p=&a容易理解,就是把变量a的地址存在指针p。*p=&a是把变量a的地址存放在指针p所指向的内存单元

C语言中:p = &a,这是什么意思? *p =a这又是什么意思? 这两名可以等效么...
p=&a,意思是把a是地址给p,这个p定义的时候是一个指针变量,*p=a,也是这个意思,比如a=2,那么*p就是等于2,p是存放2这个值的空间的地址,可以等效。

C语言中p=&a和p->a的区别,不是都表示指针p指向a吗
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。p按照...

c语言中,定义int型变量a指针*p,那么,*p=&a和p=&a是什么区别?
定义int类型变量a和指针*p,则指针p存的是一个int型变量的地址,即可以表达为:p = &a;p存的是int型变量的指,即p指针指向地址的内容,所以可*p = a; 当你用*p = &a时,编译器会认为指针的值表示了地址,编译报错。如果你真想这样表示,也可以,只需要将地址强转为int型,即 p = (int)...

在c语言中,int *p,a; *p=&a,和p=&a有什么区别?
include <stdio.h> int main(){int *p,a=0xAA; \/\/声明 int指针变量 p 和 int变量a \/\/*p=&a;\/\/把指针p 指向的值 改变为 变量a的地址 ,是无效的\/\/ 因为a的地址长度为4字节,而指针p指向的值为int,即两字节的。 printf("程序运行前的值\\n");printf("p的地址 = 0x%X \\n指针...

最近在自学C语言 请问一下 P=&a,和*p=a有什么区别么 (能举一下例子么...
p是指针变量,它存储的是指针p=&a 是把a的地址给p而*p则和a是一个类型,就是说*p相当于一个存储数据的变量,*p=a就是把a的值赋给*p例如把你的两个语句P=&a;*p=a 那么 a的地址先赋给了p, 之后p就是a的地址,*p实际就是a了,*p=a就是把a的值存入p地址所标示的内存单元中,实际上如果把这两句放一起...

c语言指针p=& a有什么区别呢?
1、一般来说*p=&a的表示方法是错的,*p=a和p=&a是正确的。2、*p=a的意思:将a的值赋给p指针指向的地址的值。3、p=&a的意思是:将a的地址赋给指针p。4、区别:*p是一个值;p是一个地址;两者完全不相同。介绍 指针,是C语言中的一个重要概念及其特点,也是掌握C语言比较困难的部分。指针...

相似回答