C语言指针赋值的问题。

作者&投稿:尾菊 (若有异议请与网页底部的电邮联系)
关于C语言中指针赋值的问题~

你这样想说明你还没有真正理解内存和指针。int a;表示编译器随机取出一个空闲的地址分配给a,不妨设为00000000,长度为sizeof(int),不同编译器可能不同。int *p;也表示随机取出一个空闲的地址分配给p,不妨设为000000f0,长度一般为4个字节,则这四个字节现在存储的内容是不确定的,假设为00000ff0,那么*p表示地址00000ff0上的值。*p=a则把地址00000ff0的值变为a的值,显然如果该地址目前正在被某个进程使用,就有可能破坏该进程,因此这种方法是十分危险的。给指针赋值一般有两种方法,一种是将已经存在的变量的地址传递给指针,格式为:p=&a;另一种是首先为指针申请指向的合法内存,C语言中用函数malloc(),然后给已申请的地址赋值,如*p=6。

&是一元运算,取变量地址的操作,间接访问操作用运算符号*.&他返回操作数的内存地址,可以赋给类型合适的指针./ 列如int x int *px px=&x
将X的内存地址赋给指针变量px,该赋值语句表示 指针px制向变量X, *运算符与&运算符刚好相反,它也是一远运算符.用语返回指针指向的内存地址中存的值!

1. n 是整型变量,p是指向整型变量的指针,q是指向指针的指针。也就是 n中存放整型数,p中存放整形数的地址,q中存放指针的地址。 * 在运算中的作用是代表取指针所指向的变量。所以选D
2.n1=0;
p指向了n2,也就是通过*p能够取到n2的值;
同理通过*q也能够取到n1的值。
所以等价的是:选项A

1: D
2: A


c语言指针赋值德问题
函数调用inv(a,10,&max,&min);就是将数组a的首地址取出来赋值给临时变量x,10赋值给n,(主程序中的变量)max的地址赋值给(参数临时变量)max,(主程序中的变量)min的地址赋值给(参数临时变量)min。由于参数的临时性,去直接修改参数变量的值,无法实现将修改后的值返回给调用者,只能利用指针型变量...

C语言指针问题
1、ptr赋值为arr地址后指向第一个元素,即元素6.2、*(ptr++) += 123;由于是右侧操作(递增后缀),所以先取ptr地址后再递增ptr,此时取得的地址还是第一个元素地址(递增后ptr指向第二个元素,也就是7,这是第一次递增),因此是对6+123=129,并保存原地址,即第一个元素地址,因此6被改为129...

C语言中指针是否能够直接赋值,为什么?
D是对的 c和指针(《pointers on c》) 8.1.11 一个字符串,如"hello",一般为字符串常量,可以用它对字符指针赋值,或初始化,相当于把这个字符串常量的首地址赋给这个指针,如:char *p = "hello";或者 char *p;p="hello";但是,当用"hello"给字符数组作初始化时,"hello",并非...

关于c语言指针赋值的问题!
int a=3,b=4,*x,*y;x=&a;y=&b;\/\/&a、&b分别取变量a、b的地址,然后给指针变量x、y赋值。这时x指向a(x存储的a的地址),y指向b。通过*x即可访问a(*x和a等效),此时*x和a都代表同一个存储位置。因此你最后的写法是正确的。切记,在间接访问指针之前,要确保指针指向一个明确的...

为什么c语言中* p= a是指针赋值?
c语言中*p=a是指针变量赋值语句,这种写法有两种可能意思:1.指针变量定义时的初始化赋值 int a[10];int *p=a ; \/\/这时的a是个地址,如:数组名或指针变量,表示定义指针变量p,同时,p指向地址a。 这里的*是跟随int的,用来表示p变量是int *类型。2.指针变量定义后,给指针变量所指内存中的...

C语言 数组指针赋值出错
*型指针。所以数组里存放的是“指针”,只是个4字节变量,它还没有指向,就不能用string[i][j]='\\0';这种办法给它的指向目标赋值。要么直接把char *string[20];改成char string[20][100];(可以存放20个长99的字符串),要么在char *string[20];后用malloc等函数分别为20个指针分配空间。

C语言中字符串是怎么赋值的?
在C语言中,字符串的赋值主要有两种方法,第一种是通过指针的方式直接赋值,第二种是通过数组直接赋值。1、指针式赋值。通过程序的运行情况,可以知道:char *p = "hello";这种字符串的赋值方式是完全没有问题的。要理解这种赋值方式,首先得理解双引号(特别注意:这个是双引号,不要赋值的时候给弄了...

关于指针赋值问题
你犯了几个错误:1)*rep++=*p++;p指针在变,你的for还用strlen(p)做循环条件。p每增一次,strlen(p)少1,所以循环的次数肯定不对。对策:增加临时变量保存strlen(p)2)*rep++=*p++;你想用rep来存字符串,但是你不停的改变rep的地址值,就算你正确的将p字符串存入rep。当for循环结束时,...

请教C语言中字符指针和字符数组赋值的问题。
回答:原因很简单 =你用了 malloc函数来分配地址空间给指针p1so 自然是不能用初始化语句*p1 = "abcd";的只是malloc函数分配制定地址,malloc函数不允许直接赋值

关于C语言中指针赋值的问题
*p=a则把地址00000ff0的值变为a的值,显然如果该地址目前正在被某个进程使用,就有可能破坏该进程,因此这种方法是十分危险的。给指针赋值一般有两种方法,一种是将已经存在的变量的地址传递给指针,格式为:p=&a;另一种是首先为指针申请指向的合法内存,C语言中用函数malloc(),然后给已申请的...

唐河县15037039794: C语言指针的赋值问题 -
犁申愈风: 指针在用要注意初始化,例如: int *p; p为指针,地址是未知的,如果直接赋值 *p=a;这样编译可以通过,但是会产生警告,p的地址是随机分配的,这样对未知的地址赋值很危险,可能会覆盖掉某些重要数据,所以避免这种危险,在定义指针...

唐河县15037039794: 关于c语言指针赋值的问题! -
犁申愈风: int a=3,b=4,*x,*y;*x=a;*y=b; 指针变量x,y没有初始化,变量里存储的是不确定的值(垃圾值),间接访问一个不确定的内存位置是非法的.所以“*x=a;*y=b;”非法.“*x=&a;*y=&b;”同样也是,这里暂时不管赋值号"="两边的类型是否兼容.int a=3,b=4,*x,*y;x=&a;y=&b;//&a、&b分别取变量a、b的地址,然后给指针变量x、y赋值.这时x指向a(x存储的a的地址),y指向b.通过*x即可访问a(*x和a等效),此时*x和a都代表同一个存储位置.因此你最后的写法是正确的.切记,在间接访问指针之前,要确保指针指向一个明确的内存位置.

唐河县15037039794: 关于C语言中指针赋值的问题 -
犁申愈风: 你这样想说明你还没有真正理解内存和指针.int a;表示编译器随机取出一个空闲的地址分配给a,不妨设为00000000,长度为sizeof(int),不同编译器可能不同.int *p;也表示随机取出一个空闲的地址分配给p,不妨设为000000f0,长度一般为...

唐河县15037039794: C语言中指针赋值的问题 -
犁申愈风: P是一个指针,顾名思义,它代表的内存中的地址.而 * 操作符则表示该地址所存储的东西.比如说,你有一个仓库,P就是告诉你这个仓库在哪,*P 告诉你的是这个仓库里面有什么. 因此,1. *P = a 表示,你把 int 型的变量 a放到这个仓库里,是赋值操作; 2. & 是取地址,&a就是获取a的地址,*P = &a,就是将 a 的地址放到这个仓库; 3. P = & a,P本身就代表地址指向,所以这里是把a 的地址赋给P,就是将P指向了a.

唐河县15037039794: 关于c语言指针赋值的问题!
犁申愈风: &是一元运算,取变量地址的操作,间接访问操作用运算符号*.&他返回操作数的内存地址,可以赋给类型合适的指针./ 列如int x int *px px=&x 将X的内存地址赋给指针变量px,该赋值语句表示 指针px制向变量X, *运算符与&运算符刚好相反,它也是一远运算符.用语返回指针指向的内存地址中存的值!

唐河县15037039794: 关于C语言指针的赋值的问题
犁申愈风: 老兄!*p=&a这种写法是错误的!定义一个int *p指针就应该给他一个指向,不然是不安全的,就像这样p=&a,就让p指向了a的地址,也就是p中存放了a的地址,访问一个值,可以通过地址来访问,像*P这个运算就是用来访问p所表示地址的里面的一个值!我们通过这个p=&a使得p指向a,那么*p就是访问a了.

唐河县15037039794: C语言指针赋值问题
犁申愈风: 是D p是指针变量 需要赋地址 n是整数 故不能赋给p

唐河县15037039794: C语言中,数组指针的赋值问题,有一个指针p,指向一个m*n的二维数组, 我需要把这个数组的每一个 -
犁申愈风: int i, j; for(i=0; i<m; i++) for(j=0; j<n; j++) p[i][j] = 1;

唐河县15037039794: 关于C语言里面指针赋值的类型问题,还有一些关于指针的问题 -
犁申愈风: 1.你这个赋值的错误应该是由于=左右的类型不一致造成的.=左边的p是指针类型,而右边是 数值类型. 指针赋值当然也是要一致才行.但是应该这么验证:int *p; float q; p=&q; //注意q前面的取地址符2.*p+4是先取出*p,然后*p的值再加4.对于你说的,*p应该是数组的第一个元素,也就是'a','a'加上4就是'e'了.*(p+4)是先计算p+4(此时指针指向了'f'),然后取其值.3.不是一个意思.赋值的话直接用str就行了,如果加上&的话,就会有错误了.祝你考试顺利~~

唐河县15037039794: C语言中指针变量赋值的问题 -
犁申愈风: 那你说new在这里返回什么呢?这句的意思是:右边的new S_BSTreeNode,就是在内存中分配一片类型为S_BSTreeNode的对象所占用的那么多的空间,并将这片空间的首单元地址赋给左边的S_BSTreeNode *型指针psNode!

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网