c语言指针中编写函数返回结果字符串的首地址,那返回的是字符串还是首地址的值

作者&投稿:中叔征 (若有异议请与网页底部的电邮联系)
C中在函数中如何返回字符串数组的首地址~

在函数中定义一个指针,注意在定义在栈上(就是用new定义的),如定义指向一个长度为5的int型数组的指针: int *p = new int[sizeof(int) * 5];
然后让这个指针指向你要返回的数组的首地址,即数组名。然后只要返回这个指针就可以了啊。
一定要是栈上的指针啊,否则在函数结束时,定义的变量就会销毁,使得不到返回值的。

函数fun中的是printf("%s
", *p),%s就是字符串啊,如果是%c,那就输出A吧。

返回的是地址,这个地址可按照你给定的类型去寻址

比如一个简单的例子:

char* pre(char* a)   //一个修改传入字符串首字符为0的函数
{                    
a[0]='0';
return a;    //返回修改后的首地址,直接返回a,此时返回的a指针指向的地址与main函数中s指向同一个地址。也就是void* f指向的地址与s数组的地址相同。
}

int main(int argc, char *argv[])
{
char s[20]={"\0"};
scanf("%s",s);
void* f=pre(s); //定义一个泛型指针(该指针可指向任何类型)
// printf("
%c",((int*)f)[0]);//以int指针类型访问
//      printf("
%s",(char*)f);    //以char指针类型访问
        printf("
%c",((char*)f)[0];//以char指针类型
return 0;
}


返回的是首地址的值,之歌地址指向了这个字符串

返回的是地址,不过可以在定义把字符串显示出来。


C语言中指针函数里面含有指针函数怎么编写,下面的有什么不对
swap2和swap3没有写返回值 scanf里"%d,%d,%d"最好不要写逗号 main()里的参数用不到最好不写 swap2(&p1,&p2);swap2(&p1,&p3);swap2(&p2,&p3);swap2的参数是指针.p1,p2,p3本身就是指针了.为什么还要&?如果函数定义在main后要声明函数 修改如下 include <stdio.h>#include <stdlib.h>...

关于c语言指针中和函数写法的问题
如果你想传递的是数组,则写 void f(int a[5])或 void f(int a[])或 void f(int *a)三者写法是一样的。

c语言编程用指针做参数编写一个函数对输入十个字符由小到大 排序_百度...
void swap(char *a, char *b){ char *tmp;tmp = *a;a = *b;b = *tmp;} void func(char *chs, int n){ for(int i=0; i<n;++i){ for(int j=i;j<n-1;++j){ if(chs[j]>chs[j+1])swap(chs[j],chs[j+1]);} } } ...

C语言编程:从键盘任意输入三个数,编写求其最大值、最小值的函数,用指针...
程序如下:#include<stdio.h>#define MAXSIZE 10main(){int a[MAXSIZE];int k;printf("please inter ten number:");for(k=0;k<MAXSIZE;k++){ scanf("%d",&a[k]);} Fun(a);for(k=0;k<MAXSIZE;k++)printf("%d,",a[k]);} void Fun(int a[]){ int i;int temp;int Max...

c语言编写函数,用指针实现矩阵相加,并且将结果矩阵的指针作为函数返回值...
include "stdio.h"include "stdlib.h"int **matrixAdd(int x1[][3],int x2[][3],int row,int col){ int **a=NULL;int i,j;a=(int **)malloc(row*sizeof(int *));for(i=0;i<row;i++)a[i]=(int *)malloc(col*sizeof(int));for(i=0;i<row;i++)for(j=0;j...

C语言编如何写指针函数
1 include<iostream> using namespace;void main(){ int a=0,b=0;int *s=a;int *p=b;cout<<“please the two numbers”;cin>>a;cin>>b;int fun(int *a,int *b){ if(*a==*b){ cout<<"different\\n";return 1;else cout<<"same\\n"; return 0;} fun(s,p);} include<...

C语言指针变量的赋值和做函数的参数
实际上的赋值语句是px=&x ;int * py ;py=&x ; \/\/单独赋值,将py指向x*py=10 ; \/\/这里的*,是引用指针中的数据操作符,*跟随的变量必须是指针类型变量,否则会出错! *py就是x,这里相当于x=10;2、指针变量作为函数的参数时,子函数可以通过指针引用实参地址中的数据,达到修改实参地址中...

c语言函数与指针;实现sin,cos,tan的求值
这个需要用函数指针实现.这几个函数都是 double sin(double)的形式, 所以函数指针为 double(*pfun)(double)于是 结果如下:include <math.h>double execute (double x, double (*func)(double)){ double temp;temp = 0;\/\/这里的temp没有实际作用. return ((*func)(x));}main(){ double (*...

c语言编程,使用指针做为函数参数,编写一个字符串交换函数,实现两个字符...
include <stdio.h>void swap(char *a, char *b){ int ch; while(*a && *b) ch=*a,*a=*b,*b=ch,a++,b++; if(*a){*b++=*a,*a++='\\0';while(*b++=*a++);}else if(*b){*a++=*b,*b++='\\0';while(*a++=*b++);}} ...

【c语言】定义一个使用指针的函数,实现交换数组a和数组b中的元素
你原代码函数那样写是实现不了数组交换的,我用你的代码小做修改。你看下吧。说明:^=只是利用异或来实现2个地址的数值交换,和你定义一个变量做交换是一个效果。include <stdio.h>#include <stdlib.h>void change(int *p1,int *p2,int len){ while(len--) *p1^=*p2,*p2^=*p1,*p...

岭东区13053619974: c语言指针中编写函数返回结果字符串的首地址,那返回的是字符串还是首地址的值 -
郟海千乐: 返回的是地址,这个地址可按照你给定的类型去寻址比如一个简单的例子: char* pre(char* a) //一个修改传入字符串首字符为0的函数 {a[0]='0';return a; //返回修改后的首地址,直接返回a,此时返回的a指针指向的地址与main函数中s指向同...

岭东区13053619974: 如何从函数中返回字符串 -
郟海千乐: C语言中实现函数返回字符串,首先要确定函数返回的字符串地址的来源,一般分为四种方式:1. 函数形参带进来的地址 2. 静态局部变量地址 3. 局部变量地址,必须在函数中用malloc()函数进行地址分配 4. 采用全局变量地址 参考代码: ...

岭东区13053619974: c语言//用指针型函数(函数返回值为指针)实现字符串连接函数strcat()的功能,将两个字符串连接起来
郟海千乐: 当然了,你看看你这个函数的最后一句 *p='\0'; return(p); p自然指向的是一个'\0'了,应该直接printf(ch1); 还有你这个程序逻辑也是由问题的(我试了一下),自己去看看

岭东区13053619974: C语言编程用指针编写函数,将一个二进制数(以字符串形式表示)转换为十进制数.请给出运算结果 -
郟海千乐: double binTodec(char *str) {int i = 0, j;double p1 = 1, p2 = 0.5;double res = 0; while(str[i]!='\0' && str[i]!='.')j = i++; do{res += (str[j--]-'0')*p1; // 计算整数p1 *= 2;}while(j >= 0); if(str[i] == '.'){do{res += (str[++i]-'0')*p2; // 计算小数p2 /= 2;}...

岭东区13053619974: C语言; 编写一个函数,用指针方法实现功能 -
郟海千乐: int find(char* source/*源串*/, char* target/*子串*/)//找到返回在源串中的位置,未找到返回-1,如果要改为找到返回1,把return i改为return 1; { int i,j; int s_len=strlen(source); int t_len=strlen(target); if(t_len>s_len) { return -1; } for(i=0;i<=s_len-t_len...

岭东区13053619974: C里面函数怎么返回字符串? -
郟海千乐: 返回指针就可以了 //举例 下面的程序就是用return返回了str1和str2 #include "stdio.h" #include "stdio.h" int i; char *string_chage(char str1[],char str2[],char str3[10]) { { for(i=0;str1[i]!='\0';i++) str3[i]=str1[i]; str3[i]='\0'; } { for(i=0;str2[i]!='\0';i++) str1[i]...

岭东区13053619974: C语言函数如何返回字符串? -
郟海千乐: 1 char*formatTime(time_t t) ,函数类型定义为指向字符串的指针,你返回str就行 2 如果你在主函数中定义str的话,再把他传给被调用函数,这样被调用函数改变了str的值后,在主函数那边即可输出,被调用函数不需要返回任何值更省事

岭东区13053619974: 一个C语言关于字符串操作的函数,返回值为指针型字符串 -
郟海千乐: 你的写法有问题... char ele[200]; s=ele; ele为函数内部定义的定长数组,等函数过程结束,对应的内存就会被自动释放,所以这样写是不对的 加了printf也不对,只是printf可能延迟了ele的释放

岭东区13053619974: c语言函数如何返回字符串,该函数又该如何调用呢 -
郟海千乐: 局部变量都是在栈上,由编译器控制销毁,malloc在堆上,手动free(pointer) 定义一个指向字符的指针,然后char* string = GetString();用完free(string);这个指针在stack上,自动销毁..

岭东区13053619974: C语言编程:编写返回值为指针类型的函数,实现将字符串中小写字母转换为大写字母 -
郟海千乐: (TYPE*) Fun(CString *str1) { 对输入字符串指针进行是否为空的判断; 对输出字符串指针进行是否为空的判断; 循环处理字符串1中的字符 将搜索字符串中的属于小写字母ASCII码范围的字母+大小写字母偏移量即为其大写字母 返回str1,即转换后的字符串指针 }

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网