新网创想网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
1.对指针概念的理解
我们提供的服务有:成都网站设计、成都做网站、微信公众号开发、网站优化、网站认证、巴楚ssl等。为千余家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的巴楚网站制作公司1.1 指针本身可以看成一个变量,于是变量类型现在有:整型变量 a;浮点型变量float b;指针型变量 *c.
指针的表示中,类型名 *指针 变量名,eg: int *a; char *p;
这个指针变量存储的是一个地址,因此*p 可以将其存储的地址上的东西表示出来;逆运算是取地址,将一个东西的地址算出来给指针p,这就是赋初值的过程。因为p手上拿着目标的地址,形象地看就像牵着遛狗的绳子,所以叫它指针。(本身没有什么特别的)
1.2 指针在定义的时候最好要赋初值,且特殊点在于,是将目标变量的地址赋给它,像下面这样。
int a = 5;
char *p = &a;
此时正在定义阶段,所以*表示的不是地址的内容,而表示p是一个指针变量,规范性要求。
1.3 指针之间交换地址,例如char *p; char*q;直接p = q;即可
2. 指针与数组的关系
2.1 可否这样理解:一个数组的首地址就是指针。在赋值的时候,可以不需要*,像同类一样,数组ch直接将它的头部交给指针变量s,往后假如想要访问第2个字母,可以ch[1],也可以s[1],也可以*(s+1)。当然也有不同,ch是数组,所占的空间是一段连续的;而指针s只占一个类型的空间。
char *s;
char ch[15]={"adskja saha"};
cin.getline(ch,15);
s = ch;
2.2 在函数中传递的形式
如果是数组的话,它的传递的格式大概像下面这样:
void hanshu(int arr[]);
int main()
{
int array[]= {0,1,2,3};
hanshu(array);
}
形参带个[ ],实际参数就是数组的名字;
类比下来,指针的传递格式可以是这样的:
void hanshu(char *p)
int main()
{
char *p;
int a;
hanshu(&a);
hanshu(p);
}
形参定义一个指针,然后实际参数就是一个地址。
3.指针和字符串
字符串可以有两种表示:字符数组和字符指针,和前面数组似乎是一个回事。需要注意的是,字符串作为参数传递只需传递首字母,因为结束有'\0'作为标记。、
PS:若定义了指针变量s,并且把它和一个字符串的首地址挂钩,对字符串的每个字母的访问可以*s,然后下一个就直接s++,到*s==0的时候结束。
例子:统计一个字符串中单词的个数。
函数部分:
//函数部分
int counnt(char *s)
{
int cnt = 0;
while(*s!='\0')
{
while(*s==' ') s++;
if(*s!='\0')
{
cnt++;
while(*s!=' '&&*s!='\0')
s++;
}
}
return cnt;
}
//函数:用字符指针传递首地址;
// 向下扫描,while(*s不是'\0')
// 当遇到空格,++s,空转不计数;
// 如果空格后面不是'\0',则遇到了字母;
// 当遇到字母,空转结束,cnt++;
// 当仍然有字母,且不是'\0',空转不计数。
// 如果遇到空格,空转结束,进入下一个循环;
//
定义和调用部分:
char *s;
char ch[15];;
cin.getline(ch,15);
s = ch;
cout<
结果:
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧