久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4669|回復: 15
打印 上一主題 下一主題
收起左側

C語言如何定義一個一定長度的字符串數組,但是數組里面的值都是變量?

[復制鏈接]
跳轉到指定樓層
樓主
ID:894154 發表于 2021-3-26 15:15 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
如題,請教各位,若我想定義一個一定長度的字符串數組,但是數組里面的值都是變量,請教該如何定義,感激不盡,如下:

unsigned char S[] ="變量1,變量2,變量3,變量4,變量5,"

謝謝!!!
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:390416 發表于 2021-3-26 15:39 | 只看該作者
s[];  這樣寫就行,千萬不能有code。code 是常量。
回復

使用道具 舉報

板凳
ID:139866 發表于 2021-3-26 15:43 | 只看該作者
那你為什么不去定義結構體呢
回復

使用道具 舉報

地板
ID:883031 發表于 2021-3-26 15:57 | 只看該作者
數組里的值是可以變化的,你賦值就會變化,但不能定義為常量型數組
回復

使用道具 舉報

5#
ID:592807 發表于 2021-3-26 17:38 | 只看該作者
人人學會單片機 發表于 2021-3-26 15:39
s[];  這樣寫就行,千萬不能有code。code 是常量。

定義數組,要么開始就直接賦值,要么直接給位數,你這樣會報錯的。
char a[2];是對的;
char a[] = "1,2"也是對的;
char a[]j就不行。
另外樓主要的 “數組里面的值都是變量” ,什么是變量,內容可變的int a,b,c中a b c就是變量,如果你確定是變量的話
int a,b,c;
int (*p)[3];
p0 = &a;p1 = &b;p2=&c;


如果你要數組內容可變的的話直接給數組賦值就好了
回復

使用道具 舉報

6#
ID:894154 發表于 2021-3-27 11:12 | 只看該作者
黃youhui 發表于 2021-3-26 17:38
定義數組,要么開始就直接賦值,要么直接給位數,你這樣會報錯的。
char a[2];是對的;
char a[] = "1, ...

感謝,好像有點看明白了,再多請教一下,像這樣定義,我函數里面使用的時候是可以這樣用嗎?
for(i=0;i<3;i++)
{
   write_data(P);
}
回復

使用道具 舉報

7#
ID:894154 發表于 2021-3-27 11:15 | 只看該作者
ANT1987 發表于 2021-3-27 11:12
感謝,好像有點看明白了,再多請教一下,像這樣定義,我函數里面使用的時候是可以這樣用嗎?
for(i=0;i

for(i=0;i<3;i++)
{
   write_data(P);
}
回復

使用道具 舉報

8#
ID:592807 發表于 2021-3-27 17:24 | 只看該作者
ANT1987 發表于 2021-3-27 11:12
感謝,好像有點看明白了,再多請教一下,像這樣定義,我函數里面使用的時候是可以這樣用嗎?
for(i=0;i

不可以。
int(*p)[3]是指針數組,里面存了3個指針等價于 int a[3][x],就是3個數組a0[x],a1[x],a2[x];
(*p)[0] = a0;(*p)[0] +1= a0[1];a0[1] = a0 +1
(*p)[1] = a1;
(*p)[2] = a2;

但是(*p) = (*p)[0] = a0,而p則是他們的地址p = &a,你傳過去的是地址,也是數組,你要的應該是a0里面放的內容,
如果你要這樣的話必須在你的()write_data必須是這樣的write_data(int *addr)
如果的write_data()的原型是write_data(unsigned char data)的話就必須是write_data((*(*(p+0)+0))。

其中
p用來存放之前定義的(*p)[3]這個指針數組的地址的
p+0是用來表示(*p)[3]這個數組第一參數的地址的,也就是數組(a0的地址)的地址,注意是存放a0地址的地址
*(p+0)用來便是表示(p+0)地址指向的內容,也就是a0的地址,可以理解成&a0,或者&a0[0];

*(p+0)+0就是&a0+0,就是數組a0的第一位參數的地址,其實就是&a0[0]
*(*(p+0)+0)就是用來便是&a00]指向的內容的,也就是a0[0].也可以是a[0][0];

其實你為何要搞的這么麻煩呢,直接定義一個變量unsigned char data然后賦值不行嗎?直接定義成全局變量也行。
回復

使用道具 舉報

9#
ID:462827 發表于 2021-3-27 19:03 | 只看該作者
你現在只定義了一個字符串而不是字符串數組哦,字符串數組要這樣:

unsigned char S[][10] ={"變量1","變量2","變量3","變量4","變量5"};
回復

使用道具 舉報

10#
ID:68800 發表于 2021-3-27 22:31 | 只看該作者
unsigned char S[];
for(i=0;i<3;i++)
{
   write_data(S[i]);
}
回復

使用道具 舉報

11#
ID:897480 發表于 2021-3-27 22:42 | 只看該作者
賦值就會變化,但不能定義為常量型數組
回復

使用道具 舉報

12#
ID:894154 發表于 2021-3-29 12:39 | 只看該作者
黃youhui 發表于 2021-3-27 17:24
不可以。
int(*p)[3]是指針數組,里面存了3個指針等價于 int a[3][x],就是3個數組a0[x],a1[x],a2[x];
...

非常感謝,我用了后面的方法,代碼是比較冗長一點,但是自己比較能把握.謝謝!!!
回復

使用道具 舉報

13#
ID:894154 發表于 2021-3-29 12:41 | 只看該作者
人人學會單片機 發表于 2021-3-26 15:39
s[];  這樣寫就行,千萬不能有code。code 是常量。

謝謝!!!
回復

使用道具 舉報

14#
ID:894154 發表于 2021-3-29 12:41 | 只看該作者
天ノ憶 發表于 2021-3-26 15:43
那你為什么不去定義結構體呢

感謝!
回復

使用道具 舉報

15#
ID:894154 發表于 2021-3-29 12:43 | 只看該作者
zhousijie33 發表于 2021-3-27 22:42
賦值就會變化,但不能定義為常量型數組

感謝!
回復

使用道具 舉報

16#
ID:898035 發表于 2021-3-29 14:50 | 只看該作者
先定義這5個變量,再定義為指針數組unsigned char *S[] ="&變量1,&變量2,&變量3,&變量4,&變量5,"
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 91欧美精品成人综合在线观看 | 99re视频这里只有精品 | 97精品国产一区二区三区 | 欧美一区二区三区在线播放 | 国产成人高清视频 | 国产综合精品一区二区三区 | 国产免费观看一级国产 | 欧美性a视频 | 欧美精品片 | 四虎免费视频 | 欧美极品一区二区 | 成人精品视频在线观看 | 成人h动漫亚洲一区二区 | 日韩精品一区二区三区视频播放 | 九九热免费视频在线观看 | 亚洲欧美日韩成人在线 | 毛片视频观看 | 欧美在线视频网 | 91佛爷在线观看 | 亚洲视频免费 | 午夜欧美一区二区三区在线播放 | 噜噜噜噜狠狠狠7777视频 | 做a网站 | 国产高清精品一区二区三区 | av大片| 国产精品福利久久久 | 国产亚洲区 | 在线天堂免费中文字幕视频 | 天堂一区二区三区 | 九九精品在线 | 国产精品久久久久久久久久免费看 | 欧洲一区二区在线 | 免费黄色录像视频 | 久久精品国产精品青草 | 国产在线一区二区三区 | 亚洲精品在线视频 | 九色在线视频 | 国产一区二区三区四区五区3d | 国产亚洲一区二区在线观看 | h视频在线观看免费 | 亚洲综合在线一区二区 |