c语言 char * char** 指针 * 和**

函数参数一重指针可以改变形参的值

gcc -g -o test test.c

文件:test.c

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

void swap(char *left, char *right){
char tmp = *left;
*left = *right;
*right = tmp;
}

void permutation(char* pStr, char* pBegin)
{
char *pCh;
if(!pStr || !pBegin)
return;

// if pBegin points to the end of string,
// this round of permutation is finished,
// print the permuted string
if(*pBegin == '\0')
{
printf("%s%s\n",pBegin, pStr);
}
// otherwise, permute string
else
{
for(pCh = pBegin; (*pCh) != '\0'; ++pCh)
{
//char temp = *pCh;*pCh = *pBegin;*pBegin = temp;
swap(pBegin,pCh);
permutation(pStr, pBegin + 1);
//temp = *pCh;*pCh = *pBegin;*pBegin = temp;
swap(pBegin,pCh);
}
}
}

void fun(int ** p){
int j=3;

printf("子函数 j的地址 %#X:%d\n",&j,j);
j=4;
*p = &j;

}

void fun1(int * p){
int i =4;
printf("fun1子函数 j的地址 %#X:%d\n",&i,i);
*p=i;
}

void strfun(char *str){
char tmp;
//str++;
char *sub="123";
str=sub;
printf("str: %s\n",str);
}

int main(int argc,char *argv[])
{
//printf("Hello!\n");
char test[] = "abc";
permutation(test, test);
char str1[] = "aaa";
char str2[] = "bbb";
printf("str1:%s str2:%s\n",str1,str2);
swap(str1,str2);
printf("str1:%s str2:%s\n",str1,str2);

int *ip=0;
int iret=1;
fun(&ip);
printf("主函数 i的地址 %#X\n",ip);
printf("ip:%d\n",*ip);

char *pp="qwe";
strfun(pp);

printf("test[]:%s\n",test);

return 0;

}

posted @ 2013-03-06 18:45  kkk3044147  阅读(603)  评论(0编辑  收藏  举报