指针实际就是实体的代表而已,不过指针是个实体的存放地址;可以进行地址运算;
创新互联专注于黄石港企业网站建设,成都响应式网站建设公司,商城开发。黄石港网站建设公司,为黄石港等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
如:p++,指针指向下一地址;p=q以q指针指向地址作为p指针的地址;
普通的用法是,声明实体或实体数组,用指针指向实体的地址:实体 b,g[8],*p;
p=b;数组名称实际就是固定长度的指针,所以常有:p=g;p=g+2相当于p=g[2];
如函数 void fun(int b[]);可以用int *p;fun(p)来调用;p代表数组b;
如函数 void fun(int *p);可以用int b[6];fun(b)来调用;b相当于指针p;
在我的系统中运行你 的程序和你想的一样,是8不是7.
string 1,string 2:
it's a boy
boy
offset 8 "boy"in"it's a boy"
所谓指针就是地址,只是指针会区别它是什么指针,对应的数据占多大内存。如subst,str都是char*类型的,他们是字符指针,所以他们指向的类型是字符。*str和str[0]的含义是一样的,意思是取得首字符。在c语言中字符串就是用字符指针来表示的,对应的是“%s”,而加上了*,是取这个字符指针地址的内容,也就是一个字符,用“%c”表示。所以你打印的是字符串,就应该用%s。
函数指针 就是指向函数的指针
比如
void pr_int(int a)//函数
{
printf("%d\n",a);
}
void func(void (*p)(int), int m)//函数指针做参数
{
p(m);//调用函数指针
}
int main()
{
func(pr_int, 100);
return 0;
}
按照你的要求编写的C语言程序如下
includestdio.h
int main()
{
int a,b;
int *p=a;
a=30;
printf("a=%d\n",*p);
p=b;
scanf("%d",p);
a=*p+24;
printf("a=%d,b=%d",a,b);
return 0;
}
运行结果
a=30
76
a=100,b=76