指针指向字符串,函数指针,多功能函数调用

来源:互联网 发布:淘宝质量好的男装店 编辑:程序博客网 时间:2024/06/06 21:42
#include <iostream>
#include <stdio.h>
#include <string.h> 
using namespace std;


/* run this program using the console pauser or add your own getch, system("pause") or input loop */


//3 函数指针


/*
//3.2 利用传递函数指针实现通用多功能函数调用 


int max(int a, int b){
return a > b ? a : b ; 



int min(int a, int b){
return a > b ? b : a ; 



int Co(int a,int b, int (*pfun)(int , int)){
return pfun(a,b);//传进来是哪个函数,pfun就指向哪个函数 
}
//指针接收函数地址条件:3同:返回类型 、参数个数、参数类型 




int main(){
int a = 10;
int b = 20;

int result = Co(a,b,max);
printf("result = %d\n",result);
return 0;
}


/* 
//3.1函数指针定义 


int max(int a, int b){
return a > b ? a : b ; 



//指针接收函数地址条件:3同:返回类型 、参数个数、参数类型 
int (*pfun)(int , int );


int main(){
int a = 10;
int b = 20;

pfun = &max;
int result = (*pfun)(a,b);
//简化版 
pfun = max;//函数名时函数的地址 
int result1 = pfun(a,b);

return 0;
}




//2 字符指针 指向字
//指针赋值:更改指针的指向 p=str; 
//数组不能更改数组名 ar=br 
int main(){


char *str = "abcdef"; 
//string
char *p = "Hello world";//定义一个指针变量p,存储字符串地址;而字符串是存储在常量区的。无法通过p【i】对其改变。 

p = str;


char ar[] = {'a','b','c','\0'};//4个字节,有结束符\0存在。 
ar[0] = 'h';//ar[]是自己开辟的空间,存储在栈中,而不是存在静态区域 

//ar = br;//报错 
return 0;



/*
int main(){

//string
char *p = "Hello world";//定义一个指针变量p,存储字符串地址;而字符串是存储在常量区的。无法通过p【i】对其改变。 
// p[0] = 'h' ;//系统崩溃 


char ar[] = {'a','b','c','\0'};//4个字节,有结束符\0存在。 
ar[0] = 'h';//ar[]是自己开辟的空间,存储在栈中,而不是存在静态区域 

printf("%s\n",p);
return 0;





/* 1 
int main(int argc, char *argv[]) {
char ar[5] = "abcd";//5个字节,有结束符\0存在。 
printf("%s\n",ar);//abc
return 0;


/*
//不需要加\0,系统会给字符数组自动分配结束符的空间。
int main(int argc, char *argv[]) {
char ar[] = "abcd";//5个字节,有结束符\0存在。 
printf("%s\n",ar);//abc
return 0;




/*
//
int main(int argc, char *argv[]) {
char ar[] = {'a','b','c','\0'};//4个字节,有结束符\0存在。 
ar[0] = 'h';//ar[]是自己开辟的空间,存储在栈中,而不是存在静态区域 
printf("%s\n",ar);//abc
return 0;
}*/
//
int main(int argc, char *argv[]) {
char ar[] = {'a','b','c'};//3个字节,没有结束符\0存在。 
printf("%s\n",ar);//abc0
return 0;
}