永发信息网

【指针初始化】C中指针变量何时需要初始化mallocC中定义:char*p*np;....

答案:2  悬赏:60  手机版
解决时间 2021-02-05 11:38
【指针初始化】C中指针变量何时需要初始化mallocC中定义:char*p*np;....
最佳答案
【答案】 首先你要明白什么是指针,指针是用来操作内存的.那么指针又如何操作内存呢?在C语言里可以定义指针变量,这个指针变量里可以存储内存的地址,一个32位的无符号整型值.它就像普通的int, double型变量一样.以下面为例说明:
  int iMax = 1;
  int * pMax = NULL;
  我们定义了一个int型的变量iMax 和一个int型的指针变量pMax,并对他们进行了初始化.这里iMax的值为1; pMax的值为NULL,也就是一个无符号整形0.注意NULL是一个宏,代表0.现在pMax的值为NULL,一般来讲0也是一块内存地址, 我们也可以操作.注意这个NULL你现在认为他表示无效即可.用来给指针进行初始化.其它的先不用管.
  现在我们来使用pMax, 如果要使用pMax, 那么就要对pMax赋值,使它指向一块内存.我们这里定义指针的类型为一个指向一个int型值的指针变量.所以可以将iMax的地址赋值给pMax.注意,不管什么样的类型的指针变量,其值都是一个unsigned int型的值,表示内存的地址.理解这一点很重要.为什么需要定义指针所指向的类型呢.如 char *, int * , double *型的指针,原因是我们使用指针是为了操作存储在内存中的特定类型的值.如果没有定义指针的类型,那我们在操作内存时,只能一个字节, 一个字节使用.这样的指针没有什么意义,也许你还不太理解.但多应用就能明白这一点.
  现在我们来给pMax赋值,然后操作它.
  pMax = &iMax;
  好了,可以使用pMax了.就像使用iMax一样用它.不过你得在它前面加个指针运算符'*';
  *pMax = *pMax + 2;
  现在的pMax指针变量中存储的是iMax变量地址的值.对*pMax操作, 就是对iMax操作.现在*pMax = 3 , iMax = 3;
  如果说我临时需要一块内存,这块内存用来存储n个int的变量.我就需要使用malloc为pMax分配一块内存.可以这样做:
  pMax = malloc(sizeof(int) * n);
  if (pMax == NULL) // 错误处理
  { TODO...}
  这样我们就为pMax分配了一块内存大小为sizeof(int) *n 字节的内存.这里malloc返回一个指向这块内存的首地址并将它赋给了int型指针变量pMax.
  好了,pMax已经可以使用了.我们需要对它进行初始化.这个可以使用memset函数
  memset(pMax, 0 , sizeof(int) * n);
  现在就可以像数组一样操作这块int型的内存了.
  pMax[0] = iMax;
  pMax[1] = iMax + 1;
  pMax[2] = pMax[0];
  ...
  总的来说,指针非常灵活.因为它可以直接操作内存.这就会使指针这个东西很不容易控制.
  像你说的p = temp ;将数组的首地址赋值给p , 这样只是为了更容易操作字符串.temp也表示字符串的首地址, 但他是一个不可改变的量,即不能对temp赋值,它是只读的.指针p就不同了,他可以进行一些数学运算.
  对一个程序来讲,如果你临时需要一块内存来存储数据,你可以使用malloc, 但记得要free.否则容易造成内存泄露.
  就这些吧. 希望对你有用.写这么多也不容易,给点分吧.^_^
全部回答
对的,就是这个意思
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
问钻石耳钉价格
近视的人可以戴平度眼镜吗?
苏盐合作园区地址在哪,我要去那里办事
梁山县福缘电脑销售部地址在什么地方,想过去
老公婚前的按揭贷款房子,怎样变成双方的共同
将巨的意思是什么啊?知道的请说下!
amd cpu 模块化是从什么时候开始
友叔小吃店我想知道这个在什么地方
2009年十大品牌电动车排行榜?
为什么冰封王座局网建立现实寻找游戏失败??
网亿安防电脑维修地址好找么,我有些事要过去
液态化合物在一定量的氧气中恰好完全燃烧,反
on day 是什么意思
思新电脑维修部怎么去啊,我要去那办事
诺贝尔奖获得者公有多少人?华侨有多少人?
推荐资讯
初中毕业就可以考师范学校了?
世界寒极是指A 北冰洋 B西伯利亚 C珠穆朗玛峰
若一组数据“-2,x,-1,0,2”的众数是2,则
农业上为达到改良土壤的目的,需要增施矿质肥
大草地址有知道的么?有点事想过去
抚顺市金誉汽车维修中心地址在哪,我要去那里
宝马740更换水泵以后应该怎样排空气
【爱国诗句名言】爱国的名人名言和诗句都有哪
面前安徽在筹集新农合钱,有人说河南省的老百
飞驼和飞驼行是一个品牌吗?
威尼斯商人作者莎士比亚本人有对犹太人刻意扭
塑料制造属于化工行业吗
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?