char *p 和int * p 的区别在于char * p 这个p指向的内容是一个字符的内存地址,而int * p指向的是一个整数的地址。也就是说char * p 中的* p 只能赋值为字符,而int * p中的* p只能赋值为整数
字符型在其本质上就是整形,我们在C语言中使用char表示一个字符型,他占用一个字符的存储空间,字符型在存储时其内部存储的依旧是二进制数据,当我们读出时将会得到一个整形数据,而我们输出时会得到一个字符是因为我们人为的定义了一个对照表,这个表规定字符a的数值就是97,所以当我们遇到97时我们有两种读出方式,第一...
初始化一个值为10的int型变量 -- 此时,计算机将上一步分配的4字节的内存空间内写上5,多余的bit写0 a = 10; // 初始化一个指向int类型(a)地址的 int * 变量 -- 此时,计算机将第一步分配给a的4字节内存空间的地址赋值给p p = &a; /** 注意,数据类型要一致,int对应int * , char 对应char * *...
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=&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的字符地址,强制转成 整形地址
肯定是char ,而且是数组,当然你也可以使用char指针动态申请malloc,不过你先使用数组吧,熟悉后再使用malloc