1. c语言指针赋值问题
请分清“指针本此信辩身的值”和“指针指向的地址中的值”这两者的区别。指针本身的值就是地森缺址。
inta=2;
int*p=&a;
//p=100;//试图将指针本身的值修改为100,即令指针p指向内存地址100的位置坦碰,这是未定义行为
*p=100;//将指针p指向的地址中的值修改为100,即将a的值修改为100
2. C语言中可以给指针变量赋值常数吗
C语言中可以给指针变量赋值常数,赋值方法为:
1、首先打开Microsoft Visual C++软件,单击“文件”菜单->“新建”,新建一个文件,文件名后缀为.c。
3. 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;
这样就对了。
(3)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改动该字符串的值,由于该字符串为常量,而它仅仅是简单的将指针指向该字符串常量。
4. c语言 指针赋值
空定义了一个指针temp,但是temp没有指向任何变量,所以不能对它所指向的地址赋值(*temp=*p1是在对temp指向的地址赋值,既然它没有指向任何已知派和迅尘此的地址,当然结果是不棚兄可预见了).
这个函数也不需要这样的指针,修改如下即可:
swap(int *p1,int *p2)
{int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
5. c语言结构体函数指针怎么赋值
指针就是指向内存的某个地址的一个变量。
结构体指针就是这个指针变量的值必须指向存放该结构体的内存位置。
当这个指针没有任何指向时,可以赋值为null值,但是改指针不可使用,程序中应该做判断。下面是一些赋值演示。
struct student{
int id;
int score;
} aaa;
struct student *p = null;//结构体指针p初始化赋值为null
struct student *p2=&aaa;//p2指向aaa
struct student *p3=(struct student *)malloc(sizeof(struct student));//内存中申请一个结构体空间,并将地址强制转换为结构体指针变量赋值给p3
6. C语言指针变量赋值0是什么意思
其实这种现象在C语言中是有定义的。
值为0的整形常数表达式或强制转换为void *类型的表达式可通过强制类型转换、赋值或比较操作转换为任意类型的指针。其结果将产生一个空指针。
7. 在C语言中能否直接给指针指向的数据赋值为什么
可以,但int *p;*p=7;这样不行。
因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。
这样才可以:
int a,*p=&a;*p=7;
实际上就是使a等于了7。
(7)c语言指针变量赋值扩展阅读:
注意事项
也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的类型相同。
假设有如下变量定义:
int i,j,*p,*q;p=&i;q=&j;
这两句将变量i和j的地址分别赋值给指针变量p和q;
执行了q=p后,执行该条语句,指针变量p和q都指向了同一个变量i,因此指针变量p和q中存放的都是变量i的地址&i。变量i此时并没有初始化,只为其分配了内存单元。
注意理解:q=p;和*q=*p
前者为指针变量q赋值,即将指针变量p中存放的某个变量的地址赋值给q。显然,赋值后,q和p就指向了同一个变量。
后者将p指向变量的赋值给q指向的变量。
例子:
p=&i;
q=&j;
i=2;
j=3;
8. C语言如何把指针指向的值赋值到变量上。。。
str1是个常量指针,不能对他进行赋值操作,
用也应该写成p=str1;
另外初始化的话一般是char*
p=NULL;
或者char*
p;
p=NULL;
9. c语言 结构体成员变量为指针时如何赋值
1、既然是指针变量,那么将一个变量的地址值赋值给该指针变量即可!
2、至于具体讲一个地址值赋值给指针有两种方法:一种就是用取地址符&来操作内嵌变量,另一种就是通过采用malloc函数动态开辟内存并将内存地址值赋值给指针变量。
3、举例说明:定义int型指针变量int
*
p;和int型变量int
a;那么将a的地址值赋值给p:p=&a;另一种方式是动态方式:p
=
(int*)malloc(size(int));
10. C语言指针变量的赋值和做函数的参数
1、指针变量的赋值,分为定义时赋值(初始化)和单独赋值,如:
int x ;
int * px=&x ; //定义时赋值,也称初始化,注意这里的*是跟随int的,即变量px是int *类型变量! 实际上的赋值语句是px=&x ;
int * py ;
py=&x ; //单独赋值,将py指向x
*py=10 ; //这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错! *py就是x,这里相当于x=10;
2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中的数据。如:
#include <stdio.h>
void func( int a, int b, int *pmax )
{
if ( a>b ) *pmax=a;
else *pmax=b ;
}
void main()
{
int a=2,b=3,max=0;
func(a,b,&max ); //这里将变量max的地址传递到子函数,子函数中通过该地址,可以修改max的值,达到子函数结束后,max能带回运算结果的效果。
printf("max=%d\n", max );
}