c语言指针地址的全部表示方法
发布网友
发布时间:2022-04-29 21:52
我来回答
共3个回答
热心网友
时间:2022-04-15 02:04
朋友那本书对指针还真的没解释多少.请看下面这个例子,看了你也应该会明白了float f = 1.1; // 定义一个<float>型的变量f,f的值为1.1;float* p = &f; // 定义一个<float * >类型的变量 p,值为&f(也就是变量f的在内存中的地址). 注意:指针也是一个变量,只是指针有点特殊,因为它只存储地址,(简单的说,指针就是一个用来存放地址的变量,)如果不懂,就继续追问.这一步你必须清楚了.*p = 3.3; // 将3.3的值付给p指向的变量.(*操作符又称作为间接值(indirect value) 或者解除引用(dereferencing)操作符.)float * p2 = p; // 定义一个指针p2让p2指向变量f.(请记住p就是一个存放地址的变量,就像普通变量一样,这条语句就是将p中存放的地址赋给p2);*p2 = *p; // 先取p指向的变量(解除引用),再取p2指向的变量(解除引用),最后将p指向的变量付给p2指向的变量,(其实这里没有任何意义,因为他们都指向变量f.这条语句相当于 f = f;)float** temp = &p; //如果对&p取地址,那么就应该用一个二级指针(**)来指向它,不然就没有任何意义. (个人认为)指针的主要用途还是体现在传递大的数据类型方面(还有一点就是他可以通过地址(指针),来改变变量的值).例如,一个很大的数组,或者一个很大的结构体,int value1[1000];typedef struct { int value2; float value3; char value4[100]; ........} test test astTest[50];千万不要以为这只是特殊的时候.其实这类复合型的数据是很常见的. 当某个函数需要调用他们时,如果直接传值调用的话...int function( int value1[1000], test astTest[50] );光是将原参数的值赋给函数的参数,就会浪费很多的内存,如果一个工程全是这样的函数,那么...很难想象.而且value1 和 astTestt的值还不会因为这个函数而改变..(不信可以试试,想要改变的话,还得将数组或作为返回值传递回来.). 但是如果用指针作为参数的话..int function2( int * value, test * astTest );这样就什么问题都OK了.慢慢体会一下...
热心网友
时间:2022-04-15 03:22
1、变量的地址用&运算符获取。
int a;
float b;
int *pa; float *pb;
pa = &a, pb = &b; //这里用&获取,或者说&表达式即是一个变量地址。
2、变量的地址,实际上是一个无符号整数类型。
int a = 2;
float b = 3;
if ((unsigned)&a > (unsigned) &b)
printf("变量a的地址大于变量b的地址\n");
3、指针也是一个变量,也具备地址。
int a = 2;
int *pa = &a;
int **ppa = &pa; //ppa保存的是指针的地址
4、其它常用的指针形式
int *pa[2]; //指针数组,有指针变量组成的数组
int a[2][2] = {1,2,3,4};
int (*pa)[2] = a; //数组指针,指向具备2个整型元素的数组。
void hello() { ; }
void (*pfunc)(void); //函数指针
void *getaddr(int var_addr); //返回类型为指针的函数
热心网友
时间:2022-04-15 04:57
&f表示变量f的存放地址,*f表示定义f是指针变量,而f的值是个地址。也就等于前面的&f,所以那个读文件的函数中,第一个放的是地址,先定义*f,所以把f方在那里是可以的,因为此时f值是一地址
C语言中,指针指向的地址.那个地址是什么地址
当指针刚声明完毕时,它并无指向的地址,只有当指针与 某有存储地址的变量发生联系时,才有指向地址。例如:int *p; // 这时 p 没有指向地址 int a=3,b=14;p = &a; 这时 p 指向了 变量 a 的地址了.// 数值 *p 等于 a 里存放的数值。 printf("%d", *p); 得 3。这时,若...
C语言的指针问题。*(p+i)是代表取值呢还是取地址?
*(p+0)就是a[0][0]的地址,*(p+1)就是a[1][0]的地址,*(p+2)就是a[2][0]的地址;而定义int (*p)[4];代表p是一个数组指针,指向一个4个 int大小的数组,此时p=a之后,p就是一个指向sizeof(int)*4这么大小的空间了,
可以介绍一下c语言里面的指针怎么运用吗?
在32位程序里,所有类型的指针的值都是一个32位整数,因为32位程序里内存地址全都是32位长。 指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为si zeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了...
C语言指针中,一,二级地址分别表示什么?如何理解?求大神
假设访问地址0x1234里的值 这是一级地址 如果再把Ox1234里的值当成地址 这就是二级地址了 指针是存放地址的变量 指针和地址的类型必须一样 除非强制转换
c语言 指针
所谓寻址,就是指你所分配的内存的首地址,要看你的内存在什么上创建?(C语言有三种内存创建方式)是该内存的那一段?才能给你相应的首地址,也就是这块内存,这是由编译器决定的,不是你决定的 如果你有兴趣可以去学微机原理和编译原理,比较复杂,牵扯硬件和汇编,还有数电,它会让你更了解这些东西...
C语言中如何用指针运算符来表示一个二维数组的元素及地址?
就是a+i的地址了,注意,这里a+i只是地址,用*符号取出该地址的数据,就是*(a+i),这里*(a+i)就是第一维指针,它指的是地址,不是数据。而且后面的*(a+i)+j就是说以*(a+i)为首地址,偏移j位,然后使用*取内容,这里就是第二维了,取到的数据就是实际数据了 ...
C语言的指针是什么
位整数,因为32位程序里内存地址全都是32位长。指针所指向的内存区就是从指针的值所代表的那个内存地址开始,长度为sizeof(指针所指向的类型)的一片内存区。以后,我们说一个指针的值是XX,就相当于说该指针指向了以XX为首地址的一片内存区域;我们说一个指针指向了某块内存区域,就相当于说该指针的值是这块内存区...
C语言指针怎么用?
在c语言中.指针被用来表示内存单元的地址,如果把这个地址用一个变量来保存,则 这种变量就称为指针变量。指针变量也分别有不同的类型,用来保存不同类型变量的地址。严格地说.指针与指针变量是不同的,为了叙述方便,常常把指针变量就称为指针。内存是计算机用于存储数据的存储器,以字节作为存储单元....
c语言指针知识点总结
- 指针只能进行减法运算,其结果是两个指针所指向元素之间的距离。3. 指针的本质 - 指针是一种变量,其*号在声明时表示指针类型。- 例如:int n = 1; int* p = &n; 在这行代码中,p 保存了 n 的地址,即 p &n,*p n。- 在使用时,*号用来表示指针所指向变量的值。
C语言中取地址的符号都有哪些???
1. 在C语言中,取地址的运算符是`&`。2. 当声明一个指针变量时,如`int *p;`,其中的星号(`*`)表示p是一个指向整型的指针。3. 赋值操作中,如`*p = 123;`,`*p`表示指针p所指向内存地址的内容,而不是地址本身。4. 在表达式中,如`k = *p + 456;`,`*p`表示的是指针p指向的内存...