情况一:int *pi指针指向const int i常量的情况 #include "stdio.h"main(){ /* begin */ const int i1 = 40; int *pi; pi = &i1; /* 这样可以吗?不行,VC下是编译错。*/ /* const int 类型的i1的地址是不能赋值给指向int 类型地址的指针pi的。否则pi岂不是能修改i1的值了吗!*/ pi = ...
通过函数指针,我们可以直接调用函数,而不需要知道函数的实际参数和返回类型。 以下是函数指针的多种赋值方法: 1.直接赋值 int add(int a, int b) { return a + b; } int main() { int (*fp)(int, int) = add; //函数指针赋值 int result = fp(2, 3); //通过函数指针调用函数 printf("%d\n...
所以如果写出int *p = 0x12345678 ; 这条语句编译器会报错:'=' : cannot convert from ' const int ' to ' int * ' ,因为赋值操作符左边和右边的表达式的类型应该相同,而0x12345678是int型常量,p是一个指向int型的指针,两者类型不同,所以正确的 方式是:int *p = (int *) 0x12345678 ; 4、指针初始化...
指针变量可以把其值赋值给指向相同类型的另一个指针变量。如指针变量A赋值给指针变量B后,指针变量A和B会指向同一个内存地址。指针变量赋值代码段:int a,*p1,*p2;p1 = &a;p2 = p1;变量和指针变量可以在同一行语句中声明,指针变量需要在名称前面加“*”。指针变量p1的值为变量a的内存地址,p2 = p1赋值...
1、指针的初始化 初看起来,指针的初始化和赋值好像很混乱,又是*,又是&,时不时又出来一个数组。其实总结起来很简单: int *p; int a=25; int b[10]; int *m=&a; int *n=b; int *r=&b[0]; 指针的定义如上所示,以*打头的变量代表该变量为指针变量。
1 可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。这样才可以:int a,*p=&a;*p=7;实际上就是使a等于了7。扩展资料:注意事项也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的...
一、指针的赋值例如:int * p; int a=3, b=4; p= &a; / /指针p 指向变量 a 的地址。 p=&b; / /指针p 重新指向变量 b 的地址。二、注意点指针变量也是变量,可以以装别的地址,但是要是同类型的。重新赋值,也叫重新指向。总结指针这方面知识比较难,大家一定要好好...
int k; int *p; p = &k; //给p赋值 *p = 7; //给p所指向的内存赋值,即k= 7 2、指针的赋值 int *p; int a; int b[1]; p = &a; p = b; 指针的赋值,“=”的左操作数能够是*p,也能够是p。 当“=”的左操作数是*p时,改变的是p所指向的地址存放的数据; ...
(1) 第一种先定义后赋值 int*p;p=&a;//这种方式正确printf("p = %d\n",p); 结果:p = 6618636 变量p存放的a的地址 重点: 先了解,指针类型,int *p,虽然是*p在一起写着,但是变量名叫p,类型为int *,也就是整型的指针类型,当你理清变量名和类型之后,你对指针的理解程度已经懂了大半了 。
相信清楚指针概念的各位知道,int*p其实划分来看是(int*)p,他其实是一个指针,那么int*p=10;等价于 int*p;p=10;,大家都知道,指针就是地址,前面语句的意思是,把常量10的值赋给指针p,按照定义来说,这是不合法的,因为常量不能直接赋值给 指针,比如int a=10;int*p=&a;这才是合法的。但是我通过VC6.0编译器...