讨论个C语言的问题
#include "stdio.h"int main()
{
int i = 0;
char (*list_device);
char a1 = {1,2,3,4,5,6,7};
list_device = &a1;//这行是对的
list_device = a1;//这行是错的
for( i = 0 ; i < 7 ; i++)
{
printf("%d ",list_device);
}
return 0;
}
两个赋值的内涵好像是一样的,请问为什么会报错呀?报的错就是“assignment error”
本帖最后由 moyanming2013 于 2016-1-7 18:29 编辑
刚刚讨论过数组指针于指针数组,你可以参考下:
https://www.stmcu.org.cn/module/foru ... 450&fromuid=3089512
你的代码
char (*list_device);
表示list_device是一个指针,指向具有7个char变量的数组,list_device的类型是这样的:char (*)。
对于数组
char a1;
a1的数组名就是该数组的地址。a1的类型为char 类型,&a1的类型是char (*)类型。
所以赋值应该是这样的:
list_device = &a1;
你不能把char 赋值给char (*)类型的,也就是list_device = a1;是错的。
printf中应该这么使用才合适:(*list_device);
其实很少像lz这么使用的,对于想操作a1,一般是这样的:
char *p;
p=a1; 楼上说的挺清楚的。
但是你的问题主要是一维数组和二维数组混用了。 lz可以理解一下以下代码:
char *p;
char p2;
p = a1;//这行是对的
p2 = a1;//这行是错的
list_device是一个数组指针,即指向一个char 型数组的指针。list_device = *(list_device + 1),也就是char 数组,是不能作为左值的,就好像:
int a = {0}, b = {0};
a = b; //这行是错的 C语言中数组不能直接等于数组。可以通过memcpy等函数进行操作。 加 -fpermissive
居然只给了个warnning。
还能运行。。。 Mandelbrot_Set 发表于 2016-1-8 16:34
加 -fpermissive
居然只给了个warnning。
还能运行。。。
我这个非主流的编译器不靠普:L
页:
[1]