c指针的用法有错误
C语言指针易错问题【附图+高分】 -
1.这个题和你前面的提问,都是关于指针的问题,因为指针太灵活,你可以画个跳转图来标记每个指针指向的内容,这样就好理解了。2.任何变量都需要有存储空间,每个存储空间对应一个存储地址,比如指针p,即p有一个存储地址,该存储地址对应的存储空间放的是p指向的地址;3.*p表示p是个指针,即p的值是个等我继续说。
p1,p2是指针变量,指向的变量在上面被定义成了&a(a 的地址),amp;b(b的地址)。因此第2条输出语句,打印出a,b的在内存中的地址.也就是-52,-50
1.这个题和你前面的提问,都是关于指针的问题,因为指针太灵活,你可以画个跳转图来标记每个指针指向的内容,这样就好理解了。2.任何变量都需要有存储空间,每个存储空间对应一个存储地址,比如指针p,即p有一个存储地址,该存储地址对应的存储空间放的是p指向的地址;3.*p表示p是个指针,即p的值是个等我继续说。
p1,p2是指针变量,指向的变量在上面被定义成了&a(a 的地址),amp;b(b的地址)。因此第2条输出语句,打印出a,b的在内存中的地址.也就是-52,-50
} 因为第二种的指针temp没有初始化是不对的.也就像楼上说的,它们只改地址的位置,不改变内容.可是,像我上面说的.最后没有初始化temp也是种错误.
D错在,字符串赋值不能直接用等号。前半部分是定义变量初值用等号没问题。但后半部分(等价于后面)连等是赋值语句,不能在定义的时候直接这么写(因为除非t在之前已定义),而且字符串赋值需要使用函数strcpy。
C语言指针与二维数组的使用错误 -
好好的二维数组,C也提供了二维数组的操作办法,干嘛要降成一维数组操作?舍简求繁降一维当然也行,可是用的是二维数组名作指针,并未强制成一维数组指针,当然那些类似i*N+j这样计算下标的算法都注定要失败。下面是我给你改过的,改得较多,有标记,所以就不细说。你对照看,可续问。include "stdio是什么。
解决方法:一个指针变量赋给另一个指针变量前,应先用free( )释放所占有的内存空间,使这部分空间可以由系统重新支配,即应在赋值语句前执行:free (a)。amp;#57348;2、指针变量赋值错误C语言规定,一个指针变量只能指向同类型的变量,不能时而指向一个整型变量,时而指向一个字符型变量。
关于C指针的几点疑惑: -
你理解错了,指针的值是一个地址,你把字符串赋值给指针p,那么p的值就是字符串第一个字符的地址,而p+1的值就是字符串第二个字符的地址,你要得到地址中的内容,需要用*p获得,字符串之所以能输出,是printf格式输出指针时,他会一直输出p,p+1,p+2希望你能满意。直到字符串的结束标志\0,你第二张图的希望你能满意。
你的p1指针都没有初始化,即你的p1指针都没指向某个字符数组你就对它所指向的内存单元赋值,这在运行时肯定会出现你上面的错误的,所以,你要如下这样做:char b[100]; //定义一个字符数组b p1=b;是什么。在第二个for循环前面,你还要使指针p1重新指向字符数组b的首元素地址,即p=b;是什么。if(是什么。
C语言指针问题 -
A:char *a说明*a是一个字符,而"china"是一个字符串,因此赋值错了。
C语言里,所有变量空间都是在程序运行之初向系统申请的,包括指针,除了一些动态申请方式如malloc函数。没有申请的空间系统是不允许读写的。那么如果一个数组大小是变量定义,则在程序运行前不能确定数组大小,也就无法申请,故不允许。所以,解决的办法便是通过malloc函数,即int a[n];可改为int* 希望你能满意。