欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
麻煩大佬解答個C語言指針問題
[打印本頁]
作者:
mtt661
時間:
2023-7-16 22:48
標題:
麻煩大佬解答個C語言指針問題
今天邊學習邊抄,自己修改了一個C語言函數,有個疑問,這個效果是在lcd指定的行,列顯示字符,
比如
void display_charE8x16(0,0,“abc”) 就會在lcd 0行,0列顯示個abc;
有個問題想不明白,為啥必須加上while(*dp)循環,而且下面dp都++了,為啥循環了abc三次后就退出循環了?這個時候*dp等于0了?
不加while循環,只能顯示a,也就是字符串第一個。
void display_charE8x16(unsigned char y,unsigned char x,unsigned char *dp)
{
unsigned char i,j,z,mono_data;
while(*dp) //
{
j = *dp - 0x20;//獲取當前ascii字符減32后的值
for(i=0;i<16;i++)
{
set_lcd_address(y+i,x); //定位起始字符在屏幕的位置。
mono_data=ASCII16[j*16+i]; //j*16是定位ascii字符在ASCII16[]數組中的起始位置。
for(z=3;z>0;z--)
{
data16bit(mono_data>>(z*3-3)); //整體分別移位6 3 0 共移動3次 取移動后最后三位 3bit
}
}
dp++;
x+=3; //每次列加3
}
}
復制代碼
作者:
glinfei
時間:
2023-7-17 08:25
沒看全程序,但一般dp應該指向的是一個字符串吧?一個字符串一般是以\0結束的,所以查到\0就退出循環。
作者:
123156fsadf
時間:
2023-7-17 08:39
“abc”是一個字符串,C語言中,字符串結尾會跟一個0x00,所以顯示到'c'的時候,再加1,就變成了0x00,也就跳出while循環了
作者:
FrankJi
時間:
2023-7-17 09:05
dp指向字符串"abc",*dp是取dp指針指向處的值,最開始時dp指向"abc"字符串的開頭,所以*dp是a,當dp++后,dp向前移動一個元素,指向"abc"字符串的第二個字符"b",...,依次類推,所以通過一個循環,不斷執行dp++,就可以用*dp取得字符串的每一個字符。while(*dp)意思是如果*dp不是0,則執行循環中的語句,如果*dp是0,則退出循環。
作者:
榆木稚
時間:
2023-7-17 12:49
“abc”是一個字符串,C語言中,字符串結尾會跟一個0x00,所以顯示到'c'的時候,再加1,就變成了0x00,也就跳出while循環了
作者:
yzwzfyz
時間:
2023-7-17 15:46
想想顯示語句執行一次,可以向顯示屏上送幾個字符呢?
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1