
正文
c语言函数传参掘金 c语言 传参
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
关于C语言函数传递指针参数,帮我看看我的程序
你c语言函数传参掘金的地址值传递错误,按照c语言函数传参掘金我给你修改的试试看,一定要注意你的实参传递的是地址还是具体的值,如果是地址,在子函数中就不要去修改你传递进来的地址。
int
main(void)
{
int
data=0;
//此处随机分配内存空间,不要用指针
myStack=makeStack(myStack,top);
Push(myStack,3);
Push(myStack,8);
Push(myStack,19);
Push(myStack,31);
Push(myStack,43);
Push(myStack,36);
Pop(myStack,data);//此处,传递的是地址值
printf("%d
",data);
}
int*
Pop(LinkedStack
myStack,int
*data)
{
pStack
cursor=myStack;
if(Stack_Empty())
{
}
else
{
while(cursor-next!=top)
{
cursor=cursor-next;
}
*data=top-data;
//此处,只是在同一个内存空间修改其值,所以不要取地址
top=cursor;
return
data;
}
}
相关问答
Q1: C语言中main函数参数用法
程序名 abc.exe ,带位置参数 3个 或2个 或1个 ...
abc.exe 987 65 4
abc.exe 987 65
abc.exe 987
void main(int arg ,char *arv[]){}
int型参数,通过字符传递,
char prog_name[60];
int x1,x2,x3;
strcpy(prog_name,arv[0]); // 程序名在 arv[0]
if (arg =2) sscanf(arv[1],"%d",x1); // 传递一个int型
if (arg =3) sscanf(arv[2],"%d",x2); // 传递一个int型
if (arg =4) sscanf(arv[3],"%d",x3); // 传递一个int型
-------------
浮点计算机参数 用 if (arg =i) sscanf(arv[i-1],"%f",fi); 从字符串里读出来。
Q2: C语言自定义函数怎么传参,一次性把数组的数据全部传入?
数组参数属于指针参数.
指针参数即时传址参数(或叫引用参数), 如果想在函数中修改参数c语言函数传参掘金的值, 这是唯一的途径.
如果把数组当作参数, 不管c语言函数传参掘金你愿意与否, 它就是指针, 指向第一个值的指针.
1. 数组参数就是指向第一个元素的指针: #include stdio.h
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
2. 干脆直接声明为指针: #include stdio.h
void getArr(int *p, int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int *p, int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
3. 即使你在形参中指定维数也不起作用: #include stdio.h
void getArr(int p[2], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
getArr(ns, sizeof(ns)/sizeof(ns[0]));
getchar();
return 0;
}
void getArr(int p[2], int si) {
int i;
for (i = 0; i si; i++) {
printf("%d\n", p[i]);
}
}
4. 既然是指针, 其值就有被修改的可能: #include stdio.h
void getArr(int p[], int si);
int main(void)
{
int ns[] = {1,2,3,4,5};
size_t i;
getArr(ns, sizeof(ns)/sizeof(ns[0]));
for (i = 0; i sizeof(ns)/sizeof(ns[0]); i++) {
printf("%d\n", *(ns+i));
}
getchar();
return 0;
}
void getArr(int p[], int si) {
int i;
for (i = 0; i si; i++) {
p[i]++;
}
}
5. 如果是字符数组, 它自己能判断数组尾界: #include stdio.h
void getArr(char p[]);
int main(void)
{
char ns[] = "ABCDEFG";
getArr(ns);
getchar();
return 0;
}
void getArr(char p[]) {
int i;
for (i = 0; p[i]; i++) {
printf("%c: %d\n", p[i], p[i]);
}
}
Q3: c语言 函数参数传递 多参数传递第二个
函数重载(同名同返回值,不同参)重写一个同名函数,参数只有d、e,调用这个函数,a、b给默认值就行
Q4: c语言向函数传递函数作为参数
#include stdio.h
//---子函数声明---//
int func1();
int func2(int (*func1)()); //形参为函数指针(即指向函数c语言函数传参掘金的指针)
//---主函数---//
int main(){
printf("向函数二传递函数一c语言函数传参掘金,\n即函数一作为函数二的参数。\n");
printf("%d ",func1());
printf("%d\n",func2(func1));//注意函数名即为函数地址!!!!!!
} //实参为函数名func1或者func1c语言函数传参掘金,两者等价c语言函数传参掘金,而非func1()
//---子函数定义---//
int func1(){
return 1;
}
int func2(int (*func1)()){ //形参为函数指针(即指向函数的指针)
return func1()+1;
}
Q5: 为什么在c语言中形参和实参之间传递的只能是值传递?
其实c语言有两种形参和实参之间传值方式,一种是传值,一种是传这个值的地址,但实际上地址也是一个值,对应计算机存储空间上的编号,所以统称为传值。
c语言函数传参掘金的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言 传参、c语言函数传参掘金的信息别忘了在本站进行查找喔。







