为您找到"
c语言中*p=&a和p=&a有什么区别
"相关结果约100,000,000个
二维数组a,a[0]表示第一行的行指针,是int*类型,自然赋值给p,不需要加&。而上面说了*p2取值是一个指针,所以给p2赋值需要一个指针的地址,所以&a[1]要加&符号取地址。PS:a作为数组名是一个指针常量,它的类型就是int(*)[2],表示指向第一行的行指针的地址。所以可以直接赋值p2=a;。
a+1是第二列的地址,a+2是第三列的地址...a是第一列第一个元素的地址,*a+1第一列第二个元素的地址...&a是整个二维数组的地址,&a+1是内存中紧跟a[5][6]这块区域的地址 (*p)[6]这里的p的效果等于a,也是第一列的地址 p=a p是第一行第一个元素的地址,a 是第一行的地址 两者...
scanf("%d",a),是读取1个数字,写入地址a,这个a如果是100,就写到地址100。如果是200,就写到地址200,显然,这很危险,万一a的存储的值刚刚好是一些指令的地址什么的,会写到这个地址修改指令,就运行不下去了,出大错。printf("%d",a) 就没什么了 把变量a的存储的值输出然后&是取地址。
1、int *p,k;p=k;//这样写,错! 这句话之前必须有前提,可以这样 int *p,k,y;p=&y;p=k;//此时表示将变量k的值赋值给指针变量p所指向的空间,相当于y=k;2、int *p,k;p=&k;//相当于把变量k的地址赋值给指针变量p
函数中改变的内容将与函数堆栈内容无关,修改的是指针指向对应内存的位置,故可以作多个修改(传多个指针,修改多个指针指向的内存空间)。最后一个问题,return的意思是函数返回,只要调用这一语句,函数即刻返回,该语句下的所有语句将不会被执行。最后祝楼主的C语言之路越走越棒!!
p是一个指针,*p是他所指向的内容,这里p是char 类型的指针,所以*p实际上就是一个字符,比如'a''0'在这里也是一个字符(用单引号括起来的都是一个字符char型)由于对于C语言来讲,字符是用ASCII码表示的,也就是说一个字符是一个0~255的整数,'0'的ASCII码是48,'1'的ASCII码是49。。。所...
c=*a:是把a所指向的内存单元的值付给变量c;a=*b:是把a所指向的内存单元的值付给b所指向的内存单元;b=c:和第一个刚好相反,表示把变量c付给b所指向的内存单元;
回答:i++是在使用i之后,使i的值加1. 假设p=&a,*p=s[i++]的意思就是把s[i]的值赋给a,然后使i加1;s[i++]=*p的意思就是把a的值赋给s[i],然后使i加1。
p = c 就是数组指针p指向 &c[0], 当p = c时p[0]就是c[0], p[1]就是c[1]; p[1][0]就是c[1][0];上面的定义可用如下替换:typedef int MyType[5];//定义一个新的类型,大小为5个整数.MyType c[4];MyType *p;p = c;这样就好理解啦.C中指针与数组关系较复杂, 但只要把a...
一个是声明时初始化,一个是先声明后赋值,在C语言里两者等价。更好的写法应该是int *p=a;因为C语言数组名等于首个元素的地址,也就是a == &a[0]