c语言 指针如何赋值

Python024

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

错误的,不能用赋值语句将一个字符串常量直接给一个字符数组赋值。

chars[20]

charss[]="hello"

s=ss错误原因是:是您不能使用赋值语句将一个字符数组直接赋值给一个字符串数组,也就是说,必须使用strcpy()函数来实现一个字符串的副本(在c语言中,但是在c++的string类中,上面的赋值是正确的)。

因为赋值字符“=”右边的表达式也可以是赋值表达式,下面的形式变量是=(变量=表达式)这是真的,所以它是嵌套的。展开后的一般形式为:variable=variable=…=表达式例如:a=b=c=d=e=5根据赋值运算符的正确啮合,其有效等价为:e=5D=eC=d.B=C.A=B

Chara[]="toyou"正确的理由:因为当你声明一个数组变量时,你只是为它腾出空间并初始化它,这是c语法。

扩展资料:

C语言中字符串赋值的理解

一、指针式赋值

上面的例子很明显,也很容易理解。但是下面的方法有点难以理解。

通过程序的运行,我们可以知道:char*p="hello"这个字符串赋值非常好。为了理解这个赋值,我们首先需要理解双引号在这个语句中的作用(注意:这是双引号,不要使用单引号)。双引号有三个主要作用:

(1)申请了空间(在常量区),存放了字符串。

(2)在字符串尾加上了“\0”。

(3)返回地址。

这里所返回的地址就赋值给了char*类型的指针变量p。

二、通过字符数组直接把字符串赋值。程序如下:

三、需要注意的一些问题

直接把字符串赋值给数组名(也就是数组首元素的首地址)是不行的。

你那样只是定义了5个指针,并没有给每个指针分配相应的内存空间,当然会出错

gets函数的参数是一个字符指针,应该用gets(p[i])

char

*p[5]

char

*d

char

p1[5][20]

int

i,j

printf("输入5个城市\n")

for(i=0i<5i++)

{

p[i]

=

p1[i]

gets(p[i])

}

.......