c语言 指针如何赋值

Python011

c语言 指针如何赋值,第1张

指针赋值

int

*p

int

a

int

b[1]

p

=

&a

p

=

b

指针的赋值,“=”的左操作数可以是*p,也可以是p。

当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据;

当“=”的左操作数是p时,改变的是p所指向的地址。

数组的变量名b表示该数组的首地址,因此p=b;也是正确的.

同类型的指针赋值:

int

val1

=

18,val2

=

19

int

*p1,*p2

p1

=

&val1

p2

=

&val2

p1

=

p2

//注意啦,p1指向了val2,而没有指向val1

要改p–>a的值,和在这个函数里面是一样的

直接

p–>a=要赋值的值

这样就可以了

唯一需要注意的就是要赋值的是结构体指针还是结构体变量,如果不是指针那就要改成点了

p.a这样

你这样想说明你还没有真正理解内存和指针。int

a;表示编译器随机取出一个空闲的地址分配给a,不妨设为00000000,长度为sizeof(int),不同编译器可能不同。int

*p;也表示随机取出一个空闲的地址分配给p,不妨设为000000f0,长度一般为4个字节,则这四个字节现在存储的内容是不确定的,假设为00000ff0,那么*p表示地址00000ff0上的值。*p=a则把地址00000ff0的值变为a的值,显然如果该地址目前正在被某个进程使用,就有可能破坏该进程,因此这种方法是十分危险的。给指针赋值一般有两种方法,一种是将已经存在的变量的地址传递给指针,格式为:p=&a;另一种是首先为指针申请指向的合法内存,C语言中用函数malloc(),然后给已申请的地址赋值,如*p=6。