int *a=b是说把b的值赋值给指针a(*a), int*a=&b是说让指针a(*a)指向b的地址。 举个例子说: int b=5,c=9 int *a1=b;---1 int *a2=&b;___2 b=c;---3 这个时候*a1=5,*a2=9 。因为在说第一步时已经把b的值,也就是5传给*a1,所以*a1=5 。在第二步时,把b...
所以你的赋值应该是用'' "表示的字符串。如果你要不报错,可以这样做:int a[]={1,2,3,4,5,6,7,8,9};
void main(){ int *a[10]={NULL};int i,j,k=0;for(i=0;i<10;i++)//让数组每个元素都指向一个10个int大小的空间 a[i]=(int *)malloc(sizeof(int)*10);for(i=0;i<10;i++)//赋值 for(j=0;j<10;j++)a[i][j]=k++;for(i=0;i<10;i++)//打印数据 { for(j=0;...
》》》c赋值的是a的地址,不是b的地址。 a的地址是int **型,可以赋值给c。 而b是数组,b的地址&b其实是数组指针, 如果真c=&b那就会出错了,访问**c的时候会挂掉。 你可以试试。上面的a=b到底什么关系,难到不是把b的地址赋值给a,a就是b 》》》就像之前说的,a=b只是简单的赋值,...
先行后列,和先列后行,在语言和运行上没有什么大的区别,按循环的原则上将,应该先少后多,这样内层循环数量多,外层少些,这样运行起来会好点,
而且语法就是非法的,数组是不允许整体赋值的。“没有长度的数组”这种说法太不严谨了:数组是相同类型数据连续的组合,和一个指针变量怎么也扯不到一起……不信你试试,写个int a[0];恐怕连编译都不会过——顾名思义,a[0]应该就是没有长度的数组,而int *p;这样声明指针却是合法的!
定义int**IP和..定义int**IP和int a赋值为什么要是**ip=a或*或*IP=或*IP=取地址a我疯了快。。。求高人。求求要是没人回我就不睡了!召唤@xuelove1234大哥哥。我的神啊,你可来了。55555
Type** a = new Type*[M];for (int i = 0; i < M; i++) a[i] = new Type[N];对应的函数声明应该是Type Foo(Type** A);和在栈上的二维数组相比,堆上的多占用了空间((M+1) * sizeof(void *)),但是大小可以在运行时确定,而堆上的必须在编译时确定。
第一步:执行a-=4(a不能为4,不然a的值会变为0,a%a会程序错误);第二步:执行a%=a(此时a的值为上个a-4的差,不过不影响),余数为0,并把0赋给a,a的 值为0;第三步:a*=a,a的值还是0;第四步:a+=a,a的值依旧为0。只要a的初值不为4,结果就是0。....
看下面的代码 include <iostream>using namespace std;void fun1(int *p){*p=5;}void fun2(int *p){int b=6;p=&b;}int main(){ int a=10;fun1(&a);cout<<a<<endl;fun2(&a);cout<<a<<endl;return 0;}把上面2个函数的区别理解了,你就知道上面问题的答案了 ...