指针与函数参数
---恢复内容开始---
关于C语言函数参数。
数组作为参数的时候,改变的原来的数组;数组当做参数的时候,传递的是指针,数组数据拷贝非常浪费内存,,c语言的编译器,数组当做参数的时候,传递的是指针
,除了数组以外,都是副本机制,新建一个变量复制。
#include <stdio.h> #include <stdlib.h> void go(int a[10])//数组作为参数的时候,改变的原来的数组 //数组当做参数的时候,传递的是指针 //数组数据拷贝非常浪费内存, //c语言的编译器,数组当做参数的时候,传递的是指针 // 除了数组以外,都是副本机制,新建一个变量复制。 { int i; printf("\ngo=%d",sizeof(a)); for ( i = 0; i<10; i++) { a[i] = 10 - i ; } } //数组名如果作为参数引用,就是指针的大小,32位4个字节 //如果作为非参数,就是整个数组大小 void goA(int a[10]) { int b[10]={1,2,3,4,5,6,7,8,9,0}; printf("\na=%d,b=%d",sizeof(a),sizeof(b)); } void main() { int i = 0; int a[10]={1,2,3,4,5,6,7,8,9,0}; printf("\nmain= %d",sizeof(a)); go(a); for (; i<10; i++) { printf("\na[%d]=%d",i,a[i]); } goA(a); }
运行结果:
---恢复内容结束---
关于C语言函数参数。
数组作为参数的时候,改变的原来的数组;数组当做参数的时候,传递的是指针,数组数据拷贝非常浪费内存,,c语言的编译器,数组当做参数的时候,传递的是指针
,除了数组以外,都是副本机制,新建一个变量复制。
#include <stdio.h> #include <stdlib.h> void go(int a[10])//数组作为参数的时候,改变的原来的数组 //数组当做参数的时候,传递的是指针 //数组数据拷贝非常浪费内存, //c语言的编译器,数组当做参数的时候,传递的是指针 // 除了数组以外,都是副本机制,新建一个变量复制。 { int i; printf("\ngo=%d",sizeof(a)); for ( i = 0; i<10; i++) { a[i] = 10 - i ; } } //数组名如果作为参数引用,就是指针的大小,32位4个字节 //如果作为非参数,就是整个数组大小 void goA(int a[10]) { int b[10]={1,2,3,4,5,6,7,8,9,0}; printf("\na=%d,b=%d",sizeof(a),sizeof(b)); } void main() { int i = 0; int a[10]={1,2,3,4,5,6,7,8,9,0}; printf("\nmain= %d",sizeof(a)); go(a); for (; i<10; i++) { printf("\na[%d]=%d",i,a[i]); } goA(a); }
运行结果:
main=40
go=4
a[0]=10
a[1]=9
a[2]=8
a[3]=7
a[4]=6
a[5]=5
a[6]=4
a[7]=3
a[8]=2
a[9]=1
a=4,b=40 请按任意键继续...
浙公网安备 33010602011771号