利用动态规划法求最大值,我用malloc函数动态创建规划表,当输入总预算小于等于8位数时都没问题,当输入9位数时就报错了。
我猜可能是因为数据太大数组放不下了?
还是什么原因,怎么解决哇
malloc的代码在哪呢
看起来像是访问越界了,malloc里是不是忘记乘以sizeof(int)
若要访问 也很简单 只需要使用星号即可
当然 星号若作为双目运算符 那么是乘的意思
但作为单目运算符 用于访问指针的值所表示的地址上的变量
#include <stdio.h>
void f(int *p);
int main()
{
int i=123;
printf("%p\n",&i); // 0061FECC
f(&i);
return 0;
}
void f(int *p)
{
printf("%p\n",p); // 0061FECC
printf("%d",*p); // 123
}
*n
可以作为右值也可以作为左值
比如:
int i=*p;
*p=i+2;
可以直接通过指针来很方便地直接改变指针所指向的变量的值:
#include <stdio.h>
void f1(int *p);
void f2(int *p);
int main()
{
int i=123;
printf("%p\n",&i); // 0061FECC
f1(&i);
f2(&i);
return 0;
}
void f1(int *p)
{
printf("%p\n",p); // 0061FECC
printf("%d\n",*p); // 123
// 修改指针指向的位置的值
*p=321;
}
void f2(int *p)
{
printf("%p\n",p); // 0061FECC
printf("%d",*p); // 321
}
左值 之所以被称为左值 就是因为在赋值号=
左边的并不是变量 而是一个实实在在的值 是表达式计算后的结果 是特殊的值
i[0]=123;
*p=123;