标签:传递 main 指针 指针类型 强制转换 poi data eof 参数
C语言中有两种向函数传递参数的方式:
1)值传递(相当于弄了参数的一个副本)
2)引用传递(相当于使用的是参数本身)
例:
#include <stdlib.h> #include <cstdio> int *p3,*p4; void fun(int* p1,int* &p2) { printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); *p1 = 25; printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); p1 = p3; printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); *p2 = 100; printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); p2 = p4; printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); } int main() { p3 = (int*)malloc(sizeof(int)); p4 = (int*)malloc(sizeof(int)); *p3 = 10; *p4 = 20; int *p1,*p2; p1 = (int*)malloc(sizeof(int)); p2 = (int*)malloc(sizeof(int)); *p1 = 5,*p2 = 15; fun(p1,p2); printf("%d %d %d %d\n",*p1,*p2,*p3,*p4); }
结果:
5 15 10 20 25 15 10 20 10 15 10 20 10 100 10 20 10 20 10 20 25 20 10 20
typedef int dataType;
1) 给数组起别名
typedef int intList[100];
那么
intList a,b;
相当于
int a[100],b[100];
2) 给指针起别名
typedef int* intPointer;
那么
intPointer pa;
相当于
int* pa;
typedef struct Node {
int a,b;
}strNode,*ptrNode;
相当于给Node起了个别名,叫strNode,并且给指向Node的指针类型起了名叫ptrNode
这样写之后,以下两句话就分别等价于:
1)strNode A;//Node A;
2)prtNode pA,pB;//Node *pA,*pB;
malloc的全称是memory allocation,中文叫动态内存分配。
malloc
(unsigned
int
num_bytes)
以上的malloc函数向系统申请分配num_bytes个字节的空间,如果分配成功,则返回一个指向被分配内存地址的第一个位置的指针,否则返回NULL。
由于malloc返回的指针类型为void*,所以在使用这个函数时,我们时常要对分配好的空间进行类型强制转换,转成我们需要的类型。
例:
int* p;//创建一个指向int类型的指针 p = (int*)malloc(sizeof(int) * 100);//给p分配连续 100*4 byte的内存空间
标签:传递 main 指针 指针类型 强制转换 poi data eof 参数
原文地址:https://www.cnblogs.com/obob/p/10261495.html