指针数组
float *target = {{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
我的本意是定义三个指针,分别指向这三行数据,运行就报错
C语言为什么不能这样定义一个数组?
求各位大佬详细解答 汗………………跟你过说了是跨度的问题。另外,指针不能当作数组使用在存储资料上。
float *target; //是指这个数组有三个元素,每个元素是参考浮点数的指针
指针只能够参考一个对象 *p = &a; 即使是 (*p) = &b; p 也是指向首地址,只是跨度不一样而已。 定义三个指针,分别指向这三行数据
是这个意思吗?
#include <stdio.h>
int main(void)
{
double data[] =
{
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
double (*p1) = &data;
double (*p2) = &data;
double (*p3) = &data;
return 0;
}
#include <stdio.h>
int main(void)
{
double data[] =
{
{0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5},
{59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5},
{34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0}
};
double (*p[]) = {&data, &data, &data};
return 0;
}
#include <stdio.h>
int main(void)
{
double d1[] = {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 31.3, 35.5, 58.7, 49.6, 55.5};
double d2[] = {59.8, 54.9, 33.1, 38.2, 26.6, 20.5, 27.8, 38.5, 41.5, 44.7, 38.1, 41.5};
double d3[] = {34.9, 36.4, 47.5, 37.9, 30.6, 23.4, 26.6, 34.3, 0.0, 0.0, 0.0, 0.0};
double (*p[]) = {&d1, &d2, &d3};
return 0;
}
你要的是哪一个?
都不是?
详细描述一下你的题目
人造人 发表于 2018-9-23 21:58
你要的是哪一个?
都不是?
详细描述一下你的题目
不是不是,就是我写的那个。我看小甲鱼有写成
char *array【5】 = {“Fishc”, “Five”, “Star”, “Good”, “Wow”}
所以我就衍生出来了一个我那样的写法 claws0n 发表于 2018-9-23 21:50
汗………………跟你过说了是跨度的问题。另外,指针不能当作数组使用在存储资料上。
float *target;...
那小甲鱼写的
char *array【5】 = {“FishC”, “Five”, “Star”, “Good”, “Wow”}
这个为什么可以呢
啊涂涂 发表于 2018-9-24 07:33
不是不是,就是我写的那个。我看小甲鱼有写成
char *array【5】 = {“Fishc”, “Five”, “Star” ...
这种写法只针对字符串,因为字符串比较特殊,字符串是地址
#include <stdio.h>
int main(void)
{
char *str = "abcd";
char ch = str;
char CH = "ABCD";
printf("%c - %c\n", ch, CH);
return 0;
}
本帖最后由 longff9009 于 2018-9-24 11:04 编辑
啊涂涂 发表于 2018-9-24 07:35
那小甲鱼写的
char *array【5】 = {“FishC”, “Five”, “Star”, “Good”, “Wow”}
1、C语言里用字符指针处理字符串的特殊处理机制啦, char *a="FishC";这里的"FishC"是一个字符串常量,C语言会在内存中开辟一个字符数组用来存储这个常量,但这个数组本身是没有名字的,无法通过数组名来引用,只能通过指针变量来引用,实际是将这个字符串第1个元素的首地址赋给指针a。a是char类型,如果prinf("%c",a),从第1个字符开始,指针a每次向后跳转1个char的长度输出下一个字符,直到遇到'\0'为止。
2、通过1个字符指针来<引用>1个字符数组,注意,只是“引用”它进行输入输出,并不是让它指向整个字符数组了,实际它指向的还是只有1个字符(不是整个字符数组),跨度还是只有1个char,只是在输出时,它会自动跳转直到将整个字符数组输出完。而对于1个int 指针,其跨度是1个int,自然不能用来指向1整个int数组了,1次只能指向其中1个int,也不会在引用时自动跳转,如果要引用下一个需要手动让指针跳转。 非常感谢帮助的每一位鱼油,祝大家天天开心{:10_264:} 人造人 发表于 2018-9-24 10:10
这种写法只针对字符串,因为字符串比较特殊,字符串是地址
void还没学到,不知道是什么东西....
程序后半段没看懂... 啊涂涂 发表于 2018-9-24 11:09
void还没学到,不知道是什么东西....
程序后半段没看懂...
那就去掉void
#include <stdio.h>
int main()
{
char *str = "abcd";
char ch = str;
char CH = "ABCD";
printf("%c - %c\n", ch, CH);
return 0;
}
啊涂涂 发表于 2018-9-24 07:35
那小甲鱼写的
char *array【5】 = {“FishC”, “Five”, “Star”, “Good”, “Wow”}
这个是字符串吧,字符串可以这样
页:
[1]