指针是地址
char *p ="Hello!"是指向字符串首地址的指针变量。把p声明为一个指向字符的指针,并用字符串常量的第一个字符的地址对指针进行初始化。
c语言没有字符串类型,字符串通常储存在字符数组中,而字符串类型会产生一个指向字符串首地址的指针,所以也不需要字符串类型。
#include<stdio.h>
int main()
{
char *p = "hello world";
*p = 'c';
printf("%s\n",p);
return 0;
}
这是个常量字符串,字符串常量被放在静态区,常量不能被改变。所以并不能达到我们想要的结果。
如果想改可以用 char p[ ] = "hello world"(p = "cello world"但这种改法并不是改了字符串的'h'而是把p改为了cello world); 数组开辟的空间在栈上,栈空间在函数调用时开辟,调用完毕自动回收,这才可以改变它的值。
int *m[4] 指向数组首元素地址的指针变量
int (*m)[4] 数组指针 指针指向数组(整型数组,大小是4)
int *p(int,int) p是函数 返回值的类型是整型指针类型
int(*p)(int,int) 函数指针
int fun(int a,int b)
{
}
p = fun;