`
阿尔萨斯
  • 浏览: 4152153 次
社区版块
存档分类
最新评论

C-指针与字符串,函数等应用(8)

 
阅读更多

用指针操作字符串与操作数组是差不多的.对于字符串的特殊部分如下

//指针操作字符串的操作相当于操作数组

#include <stdio.h>

void test();
void test2();

int main(int argc,char *argv[]){
	test2();
}

void test(){
	//定义一个字符串常量
	//因为指针指向的是一个地址, 即p的地址是'l'的地址
	const char *p="lwb";
	//定义一个字符串变量 并赋予指针
	char array[]="lwb";
	char *p2=array;
}

//利用指针遍历字符串
void test2(){
	char array[6]="linwb";
	char *p=array;
	int i = 0;
	
	for (; array[i]!='\0'; i++)
	{
		printf("%c\n",*(p++));
	}
}

有时候经常需要使用指针去替代函数的使用.其函数指针的简单语法如下:

#include <stdio.h>

void test();
int test2();

int main(int argc,char *argv[]){
	test();
}

//利用指针指向函数
void test(){
	//一般对象类比
	char a='A';
	char *p;
	int (*p2)(int);//1.创建一个指向test2()的指针
	//指针对象的调用
	p=&a;
	printf("%c\n",*p);
	//指针函数的调用
	p2=test2;//2.利用指针运行该函数,函数名代表函数的地址
	printf("%d\n",(*p2)(2));//3.取出指针返回值
}

int test2(int args){
	return args+2;
}

我们经常过的设计模式中使用的指针函数例子:

#include <stdio.h>

int add(int ,int);
int minus(int ,int);
int calculate(int,int,int (*p)(int,int));

int main(int argc,char *argv[]){
	int result;
	result=calculate(5,2,minus);
	printf("%d\n",result);
}

//利用指针函数实现的策略模式下
int calculate(int a,int b,int (*p)(int,int)){
	return p(a,b);
}

//算法2
int add(int a,int b){
	return a+b;
}

//算法1
int minus(int a,int b){
	return a-b;
}


分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics