您的位置首页百科知识

C语言指针的赋值问题

C语言指针的赋值问题

的有关信息介绍如下:

指针在用要注意初始化,例如:

int *p;

p为指针,地址是未知的,如果直接赋值

*p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针时注意初始化,也就是赋值。

可以int *p=&a;

或者int *p;

p=&a;

然后再对p进行操作

有错。

注意大小写,还有

int a=9;

int *p;

p=&a;//这个是指针指向a

*p=8;

这样就对了。

C语言指针的赋值问题

指针的赋值

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

备注:字符串与指针的初始化和赋值

初始化:

char *cp = "abcdefg"; //这个初始化过程,是将指针cp指向字符串的首地址,而并非传递字符串的值。由于,在C语言里面,没有总体处理一个字符串的机制

赋值:

cp = "abcdefg";

*cp=”abcdefg” ;//错误!字符串常量传递的是它的首地址,不能够通过*cp改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。