情况一: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 = ...
所以如果写出int *p = 0x12345678 ; 这条语句编译器会报错:'=' : cannot convert from ' const int ' to ' int * ' ,因为赋值操作符左边和右边的表达式的类型应该相同,而0x12345678是int型常量,p是一个指向int型的指针,两者类型不同,所以正确的 方式是:int *p = (int *) 0x12345678 ; 4、指针初始化...
通过函数指针,我们可以直接调用函数,而不需要知道函数的实际参数和返回类型。 以下是函数指针的多种赋值方法: 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; int a=25; int b[10]; int *m=&a; int *n=b; int *r=&b[0]; 指针的定义如上所示,以*打头的变量代表该变量为指针变量。 指针初始化时,“=”的右操作数必须为内存中数据的地址,不可以...
一、指针的赋值例如:int * p; int a=3, b=4; p= &a; / /指针p 指向变量 a 的地址。 p=&b; / /指针p 重新指向变量 b 的地址。二、注意点指针变量也是变量,可以以装别的地址,但是要是同类型的。重新赋值,也叫重新指向。总结指针这方面知识比较难,大家一定要好好...
指针的运算 C语言的指针变量可以进行赋值运算、加减算术运算和关系运算。下图描述了C语言指针的赋值和加减算术运算。赋值运算 指针变量可以把其值赋值给指向相同类型的另一个指针变量。如指针变量A赋值给指针变量B后,指针变量A和B会指向同一个内存地址。指针变量赋值代码段:int a,*p1,*p2;p1 = &a;p2 = p1...
1 可以,但int *p;*p=7;这样不行。因为“能直接给指针指向的数据”赋值,而这里的p还没有指向,所以不能赋值,这种指针有个名字叫“悬浮指针”,是不能给它赋值的。这样才可以:int a,*p=&a;*p=7;实际上就是使a等于了7。扩展资料:注意事项也可以使用赋值运算符为指针变量赋值,但要保证两个指针变量的...
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所指向的地址存放的数据; ...
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所指向的地址存放的数据; ...
使用&方式 ptr3 = ptr1;//将指针ptr1赋值给ptr3。使用另一个指针的方式 输出的结果 ptr1 = 000000b37d7ff8c0 ptr2 = 000000b37d7ff8c0 ptr3 = 000000b37d7ff8c0 可以看到3个指针变量都是相同的地址。需要注意的是声明指针的类型和地址应该兼容,如:int类型的地址应该赋值给指向int的指针。图示总结 ...