标签:
一.变量:
声明一个变量系统是没有给这个变量分配内存空间的:
例:
int j;//编译的时候是没有分配内存空间的 int i=3;//计算机在编译的时候就会给这个i分配4个字节的内存空间
二.malloc动态分配内存地址:
#include <stdio.h> #include <stdlib.h> int main() { int b; b=(int)malloc(sizeof(int)); //没有这句话,变量b 是不占内存的,printf输出就会空指针异常;有这句话,就输出的申 请的内存地址 printf("%d",b); system("pause"); return 0; }
三.C中的*和&:
#include <stdio.h> #include <stdlib.h> int main() { int a[]={1,2,3,4,5};//这个数组里存入的是具体的数据 int *num[]={&a[0],&a[1],&a[2],&a[3],&a[4]};//这个数组里面就是全部存的数内存地址,并不是数据 int **p,i; p=num; for (i = 0; i < 5; i++)//注意这里,C语言是不能在这里进行变量的定义的如:int i { printf("%d\t",**p);//这里的p表示num数组的首地址,*p表示num[1]的值,也就是a[0]的地址,**p就是值了 p++;//指针向下移一格 } system("parse"); return 0; }
#include <stdio.h> #include <stdlib.h> struct note { int data; struct note *next; }; int main() { struct note *head,*p,*q,*t;// int i,n,a; scanf("%d",&n);//有多少个数 head=NULL;//头指针初始化为空 for (i = 0; i < n; i++)//循环读取n个数 { scanf("%d",&a); p=(struct note *)malloc(sizeof(struct note));//动态申请一个节点的空间,存放节点 p->data=a;//将数据存入data中 p->next=NULL;//设置当前指针的后续指针指向空 if(head==NULL) { head=p;//如果这是第一个创建的节点,就让头指针指向这个 } else { q->next=p;//如果不是第一个节点,就让前一个的后续指针指向当前节点 } q=p;//在将q也指向当前节点 } t=head; while (t!=NULL) { printf("%d\t",*t); t=t->next; //继续下一个节点 } system("pause");
return 0; }
标签:
原文地址:http://www.cnblogs.com/fengxuehuanlin/p/5423386.html