字符指针 :
- 在给字符指针初始化赋值时, 如果赋的值为字符串常量的首元素的地址;
则在后面的代码中, 不能通过该指针去修改字符串常量中字符的值.
练习 :
删除字符串中的空格. “hell o” === “hello”,输入的为”quit” ; 结束程序.
int main(int argc, const char *argv[])
{
char str[128];
char *p = NULL;
char *s = NULL;
while(1)
{
printf("请输入一个字符串: ");
gets(str);
p = str;
while(*p != '\0')
{
if(*p == ' ')
{
s = p;
while(*s != '\0')
{
*s = *(s+1);
s++;
}
}
else
p++;
}
printf("处理结果为:%s\n",str);
if(strcmp(str, "quit") == 0)
break;
}
return 0;
}
register :
- 修饰的变量没有内存编号; 没有办法进行获取变量地址的运算(&)
指针数组 :
- 存储类型 数据类型 * 数组名[数组的大小] ;
指针数组 和 二级指针
指针 :
- const int *p ; const修饰对象为*p ; 修饰p所指向的存储空间的值为只读;
- int const *p; 与上面的功能一致, 只是形式不同.
- int * const p; const修饰对象为变量p; p的指向不能发生改变.
const :
void 型指针 :
- void *p
- void 型指针参与运算时, 必须经过显式强制数据类型转换.
*任意类型的指针变量 在32位系统占用字节数为 : 4个字节64位下 : 8个字节 .