char *p 和int * p 的区别在于char * p 这个p指向的内容是一个字符的内存地址,而int * p指向的是一个整数的地址。也就是说char * p 中的* p 只能赋值为字符,而int * p中的* p只能赋值为整数
字符型在其本质上就是整形,我们在C语言中使用char表示一个字符型,他占用一个字符的存储空间,字符型在存储时其内部存储的依旧是二进制数据,当我们读出时将会得到一个整形数据,而我们输出时会得到一个字符是因为我们人为的定义了一个对照表,这个表规定字符a的数值就是97,所以当我们遇到97时我们有两种读出方式,第一...
int*p;//这是一个指针定义,int*指定义的是一个指针类型,p为变量名,指针类型的变量名。 指针用法: // 定义// 先定义一个int变量 -- 声明时分配内存,此时,计算机为a分配一个4字节的内存空间inta;// 定义一个int * 变量,用来保存int类型变量的地址,即a的地址 -- 声明时分配内存,此时,计算机为p分配一个...
1、先看char* p[ 5] 由于*是自右向左结合的,所以首先它是一个数组,然后是char*类型的,所以char* p[ ]是一个存放指针类型的数组(即:存放char类型变量的地址的数组);2、再看char (*p)[5 ] ,首先()的优先级比*高,所以p是一个指针即地址,然后从这个地址开始以sizeof(char)*5分配...
对于int **p来说,p所指的对象是指针,那么++p就是让p的值增一个指针的大小,虽然指针所指对像可大可小,但是指针自己的大小却是一定的,目前的系统上一般是4字节(64位系统我没用过,可能是8字节)。也就是说,对char *p和long *q来说,p和q本身占内存容量是一样大的(虽然char和long占内存...
指针的类型表示指针指向的内存单元的数据所表示的类型。指向int类型的指针表示指针指向的内存地址保存着的是int类型的数据。同理,指向char类型的指针表示指向的内存地址中保存的是char类型的数据。指针本身来讲,只是记录了一个地址,指针的类型表示记录的地址所保存的变量数据的类型,两者的区别仅此而已。
不等,int *p,其中p表示的是指向int类型的指针,p[0]表示的是指针p所指向的内存单元的值,打个比喻,int *p中的p有点类似于a[0]中0的角色,而不是a[0]的角色
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...
p=a;使p的值等于a——由于p和a的类型不同,所以显然发生了静态类型转换才能保证表达式的合法性。表达式a在这里并不作为左值而是隐式地转换成一个char*类型的指针(不是对象,而是临时对象,或者精确地说,一个不在运行期占据存储空间的右值),等于&a[0]的值,即a[0]的地址。注意数组元素的地址是...
int *p; //定义 char *n;...p=(int *)n; 把n的字符地址,强制转成 整形地址