首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

关于指针赋值的有关问题

2012-02-13 
关于指针赋值的问题今天看递推法求阶乘,当中有些代码看不明白,望int *b,ma[0],i,j,r,carryb(int *)mall

关于指针赋值的问题
今天看递推法求阶乘,当中有些代码看不明白,望  
int *b,m=a[0],i,j,r,carry;
  b=(int *)malloc(sizeof(int)*(m+1));
  for(i=1;i<=m;i++)
  b[i]=a[i]; /*把a中的结果放b中*/


b明明是指针,怎么可以对他像数组一样赋值呢???还有就是了解递推法的朋友是否可以说下,为什么b分配的地址是m+1呢?

[解决办法]
指针指向多个元素时,不象数组那样赋值怎么赋值?
你下面循环中赋值从元素1到m,数组、指针都是从下标0开始,因此你浪费了一个字节,所以总共用了m+1个
[解决办法]
LZ 所谓的数组风格的赋值就是这样的
如声明 int a[5];
现在其实 a 就是一个指针,指向数组的第一个元素
a[i] 就是到数组中第 i 个元素的引用
所以对指针 int* p = a; 做数组风格的赋值也是符合语法的
C++ 初学者可能不太习惯,这大概就是 C 语言的风格吧。
想 malloc 这样的函数也是 C 风格的呀
如果那些语句使用 C++ 的风格就是

C/C++ code
int* b = new int(m+1);for(int i = 1, i <= m, i++)        b[i] = a[i]; 

热点排行