C语言中。一个指针子函数返回值是地址还是地址中得内存内容。。
这种方式叫做“用指针函数*creat()的返回值来传递动态内存”,这是一个C语法
首先你要注意,子函数*creat()用了malloc动态申请内存,而return返回的是指针变量所指向的地址,而不是指针!相当于将你所申请的动态内存返回给主函数
int *fun(void)//这里是指针函数
{
int *p = (int *) malloc (int);//动态申请内存//p在这里指向了一块合法内存的地址
return p;
}
void main(void)
{
int *q = NULL;
q = fun();//fun()返回指针p所指向的地址,(指针p是在栈上创建的,所以*fun()函数运行完,指针所分配的内存被系统自动释放)这时q指向p,得到了malloc所申请到的内存
free(q);//释放动态内存
}
返回的是地址,这个地址可按照你给定的类型去寻址
比如一个简单的例子:
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;}
定义了一个返回值类型为整型指针(int*)的函数,函数名为a,这个函数需要传递一个参数b,该参数的类型也是整型指针(int*)。
所以调用该函数的地方应该传入一个整形指针。
这里强调一下指针的三个要点:①指针是一种特殊的变量;②指针这种变量存储的值为一个内存地址;③以指针变量的值为内存地址起始的若干字节存放着一个该类型的数。
这个函数的意思是:
函数返回一个指针,函数形参是一个指针变量,所以既然是返回指针,return b 就行了,
函数输入的是一个地址,但是对其操作是程序会自动提取它指向的内容进行操作!
给你个例子咯
int *a(int *b)
{int *c;
*c=*b;
return c;}
main()
{
int *p,*o;
*p=6;
o=a(p);
return 1;
}
最后o指向的内容就是6
int *b 这个是指针,实地制止,不能返回指针的地址
C语言,利用指针编写程序:删除一个字符串中的某一个字符
你好!p,q是指针,*p,*q表示p,q指向的地址储存的字符 ++是自增运算符,*q++=*p表示将当前p指向的地址储存的值赋值给q指向的地址,赋值完成后q++,即q指向下一位地址 根据程序来说:for(p = s, q = s; *p! = '\\0'; p++) if(*p != del_x) *q++ = *p;*q = *p;...
c语言中没有任何下标的数组名,而是一个指向该数组第一个元素的指针...
数组名就是第一个元素的地址,指针就是地址,不懂追问
c.p.是什么意思(C语言指针##p是什么意思)
p*=i也就是p=p*i,即将原始的p值与i值相乘,结果赋值给p。C语言中类似的符号还有+=,-=,\/=,%=,^=,|=,&=等等。C语言指针**p是什么意思 p:二级指针,表示p所指向的地址里面存放的是一个指向类型的指针。*p:一级指针,表示p所指向的地址里面存放的是一个类型的值。
C语言,利用指针编写程序:删除一个字符串中的某一个字符
=a[i]; j++; } } printf(" %s",b); } 。5、只要当i+1不等于c时把a【i】里面的字符赋给b【i】,那么这样当i+1=c时不把它赋给b【i】从而实现删除功能。6、最后就给大家完整的看一下整体的一个代码流程。
c语言中p为指针 使p指向一个单元,然后取出该单元的数据要怎样写表达式...
例如:int a=2;int *p;p=&a;printf("%d",*p);\/\/此处的*p就是取p指向的单元中的数值
c语言 输入一个字符串,用指针实现从第一个字符开始,依次跳过一个字符输...
for(i=0,i<lenth(string),i=i+2) printf("%c" *(p+i)); 其中p是指向字符串的指针,string代表字符串。 嗯,应该没错!
C语言中文件指针(FILE*)在指向一个文件后,能不能用自增和自减,来确定...
可以,你可以把它想象成一个字符指针,用它去指向一个字符串,然后可以一个一个字符的读出来
c语言中移动指针*p++。它移动了多少啊.一个字节吗?
那要看指针变量p是个什么类型,他移动的字节数就是sizeof(指针变量p指向变量的类型)比如:int *p;p是指向int类型的指针变量,那么p++就移动了sizeof(int)个字节,也就是4字节
在c语言中,“->”是什么意思?也是指针的意思?可不可以举个例子说明一...
(->)是一个表示成员的运算符,与·运算符的区别是:(->)用来表示指向对象的指针的成员,表示数据成员 (·)用来表示一般对象的成员,表示成员函数。例如:(1)Pdate->year, Pdate->month, Pdate->day;或者 (*Pdate).year, (*Pdate).month, (*Pdate).day;(2)Pdate->SetDate(int y...
C语言 写出一个通用函数,该函数从一个字符指针数组中寻找指定的一个字符...
include<stdio.h>#include<string.h>int strSearch(char *str[], char *a){int find=0,i;for(i=0;i<2;i++) if(strcmp(str[i],a)==0) {find=1;break;}return find;}int main(){char *str[]={"search","abc"};printf("%d\\n",strSearch(str, "abc"));return 0;} ...
虞钟三乐: 这个函数的意思是:函数返回一个指针,函数形参是一个指针变量,所以既然是返回指针,return b 就行了,函数输入的是一个地址,但是对其操作是程序会自动提取它指向的内容进行操作!
许昌县15190057052: c语言指针中编写函数返回结果字符串的首地址,那返回的是字符串还是首地址的值 - ?
虞钟三乐: 返回的是地址,这个地址可按照你给定的类型去寻址比如一个简单的例子: char* pre(char* a) //一个修改传入字符串首字符为0的函数 {a[0]='0';return a; //返回修改后的首地址,直接返回a,此时返回的a指针指向的地址与main函数中s指向同...
许昌县15190057052: 在 一个指针函数中它返回的是指针的数值还是地址啊? - ?
虞钟三乐: 假定你所谓的指针函数为 返回值类型为 指针的函数;如 int * func(void) { int *ret_code; ret_code = (int*)malloc(sizeof(int)); return ret_code; } 假设这么使用:int *pVal; pVal = func(10); 函数返回的指针值赋给了变量pVal,可以这么说,函数返回...
许昌县15190057052: C语言中,指针型函数和函数型指针的区别 - ?
虞钟三乐: 指针函数,本质上是一个函数,只是函数的返回值是一个指针,比如int *f() 函数指针,本质上是一个指针,只是指向的是一个函数,比如int (*f)()
许昌县15190057052: c语言返回值具体是指什么? - ?
虞钟三乐: 子函数的返回值,main主函数也是有返回值的,但是一般用不到都忽略掉了,一般来说的返回值就是子函数的返回值.当需要一个函数去处理数据时,如求平方,这时候求平方后的值可以有两种方法表达 1、以值的形式返回给你,即return x,...
许昌县15190057052: 怎样在C语言中用函数返回一个数的地址呢? - ?
虞钟三乐: 首先函数返回一个指针类型即返回地址. 例: int * func(void) { int a= 10; int *p = &a; return p; }
许昌县15190057052: c语言函数返回字符串时必须要用指针吗?如果返回结构体呢?函数在返回那些类型值时必须要用指针??
虞钟三乐: 所谓函数类型是指函数返回值的类型.在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数. 定义指针型函数的一般形式为: 类型说明符 *函数名(形参表) { …… /*函数体*/ } 其中函数名之前加了“...
许昌县15190057052: C语言指针与返回值 - ?
虞钟三乐: 函数A的返回值错误.虽然地址和指针很像,但还是不同的两个东西.而且,一旦出了函数A,返回的地址,也就该被回收,会导致程序出错.是非常危险的行为. 举个例子说明下吧. int *p=a; 这个,在数值上,p是和a的地址相等的,也就是有p==&a. 这时如果a=1;那么你知道*p==1,是真. 但是此时,p存储的是a的地址,p还有自己本身的地址.就好比,你(p)坐在座位上,用手指向另一个座位(&a)一样.那个座位就是a的地址,上面坐着谁(1),就是a的值.你本身就是指针了. 所以说,返回值是指针和地址是完全不同的两个概念.所以就是错误的!B函数为啥正确呢?因为NULL是一种特殊的指针,叫空指针.所以是可以算作正确的.
许昌县15190057052: c语言中在指针s作为函数返回值时s=&t与*s=t的分别 - ?
虞钟三乐: 前面的是返回t的地址,后面则是将t 的值保存到s所指向的内存空间中.在函数中,不能返回局部变量的地址,因为函数结束后,局部变量就被释放了,如否t 是局部变量,则前面这种做法是不允许的,而后面的做法中,s 所指向的空间必须有大小,不允许为空和野指针.再看看别人怎么说的.
许昌县15190057052: c语言问题一个函数,当我的返回值是指针时,就会通不过编译,说“不可移动的指针(地址常数)比较在函数”?
虞钟三乐: 函数的生存周期一旦结束,你指针指向的变量就会被释放掉.你返回指针当然是不行的. 警告也是同样的道理,你指向的变量还是被释放掉了.