char *p 和int * p 的区别在于char * p 这个p指向的内容是一个字符的内存地址,而int * p指向的是一个整数的地址。也就是说char * p 中的* p 只能赋值为字符,而int * p中的* p只能赋值为整数
一个是指向字符变量的指针,一个是指向整型变量的指针,主要是做指针运算的时候有区别,前者+1相当于是加了一个字节,后者是加了四个字节
正如char类型变量的值是字符,int类型的变量的值是整数,指针变量的值地址。在C语言中,指针有许多用法。 (1)指针的声明 int *p; // 声明一个 int 类型的指针 p char *p // 声明一个 char 类型的指针 p int *arr[10] // 声明一个指针数组,该数组有10个元素,其中每个元素都是一个指向 int 类型对象的指...
int *p = reinterpret_cast<int*>(100); //将 A* 转换为 int* p = reinterpret_cast<int*>(new A(25, 96)); cout<<*p<<endl; return 0; } 运行结果:3.0262e+2925可以想象,用一个 float 指针来操作一个 char 数组是一件多么荒诞和危险的事情,这样的转换方式不到万不得已的时候不要使用。将A*...
f(char *p) 是传位址,p可能是一个字元的位址或者一个字串(字元阵列)的起点位址。f(int *p) 也是传位址 f(int p) 才是值传递 两者的差别在於f(int p) 在函数中改变 p值,只要跳出函数就会还原,而f(int *p)则会直接改写来源变数的值。例:void fa(int a);void fb(int *a);int ...
int型指针变量p指向char型数组"1234",会把这个字符串当做整数来看待,"1234"转为16进制字节分别是0x31、0x32、0x33、0x34,如果是整数则是0x3231、0x3433,转为10进制则是12849、13363,明白了吧?
char* p[5 ]和char (*p)[5 ]无非是指针数组和数组指针的理解:1、先看char* p[ 5] 由于*是自右向左结合的,所以首先它是一个数组,然后是char*类型的,所以char* p[ ]是一个存放指针类型的数组(即:存放char类型变量的地址的数组);2、再看char (*p)[5 ] ,首先()的优先级比*高...
int *p = 5表示的是定义整型指针p并将p初始化为5 所以等价于 int *p;p = 5; //注意不是*p = 5 是对的 int *p = "hello"类型不对,可以强制类型转化int *p = (int *)"hello";,不过p是整型,后面是字符常量,没什么实际意义 ...
到底用int *p;..有经验的或者新手按照教科书都知道声明一个指针变量应该像这样写 int *p;可是本菜鸟觉得不妥各位大神看:“*”在C语言里有乘法的意思,也有说明一个变量是指针变量的功能,对于本鸟的讨论,他还有个更重要
int *p=&a;即声明一个整型指针变量p,并给指针变量p赋初值为变量a的地址。即p中存放的是变量a的地址。如果,*p=&a;这样话,是把变量a 的地址存到指针变量p所指向的内存单元中.例如:main(){ int *p,**k,a,s,t;a=5;p=&a;/*指针变量p存放变量a的地址*/ s=*p;k=&p;/*指针量变量k...