C語言數(shù)組名是“地址常量”和指針數(shù)組,結(jié)構(gòu)體類數(shù)組
復(fù)習(xí)(C語言基礎(chǔ)知識) 一,switch case default語句 1switch()和case()內(nèi)的數(shù)據(jù)類型必須一樣 2.case()內(nèi)的必須是常量 3switch匹配和他滿足的case且如果不遇到break程序會一直向下執(zhí)行(會進入下面不滿足的下面case語句也會進入default語句) 4,如果所有case語句都不滿足則進入default語句(default語句可以程序?qū)懺谌魏挝恢玫梢阅J在最后因為執(zhí)行完所有case才會看default) 二,continue和break continue跳出每次循環(huán)立即進入下一次循環(huán) break跳出本層循(內(nèi)循環(huán))環(huán)立即進入下一層循環(huán) 三,字符串結(jié)尾有/0如果位置允許任然會自動添加/0
正文開始 本文主要介紹了 char a【】; char *p=a; 這里p和數(shù)組名a都表示數(shù)組首元素的地址那么他們有啥不同呢 1 p可以被重新賦值 a作為地址常量不行 2 sizeof(a)求的是字符串a(chǎn)的字節(jié)數(shù) sizeof(p)始終等于4 一,數(shù)組a【】的數(shù)組名是地址常量 *a是常指針(方向固定指向的地址固定) 比如 int a【】={1,2,3} 這里定義了一個數(shù)組a 這里數(shù)組名a(或者是*a)就是一個常指針也就是這個指針方向不能改變 比如我們不能int p=3 然后讓 a=&p 也不能進行 a++這種操作 那么如何利用數(shù)組名a調(diào)用數(shù)組中的元素呢 我們現(xiàn)在定義一個數(shù)組 然后用一個指針p指向數(shù)組首元素地址(數(shù)組名a) 其實這里p=a//但是其實a和p還是有區(qū)別的 因為a是地址常量是沒法變的 而p這個指針方向是可以改變的 此外
所以這里對a賦值是不合法的(不能對常量賦值)
但是我們改動p的位置是合法的 幾種合法調(diào)用數(shù)組a第二個元素的方法 1,利用a【2】
2,利用p【1】//這里p【1】等價于*(p+1)
3利用*(p+1)
4.雖然無法改變地址常量a 但可以利用*(a+1)來輸出第二個元素
看幾個數(shù)組名是地址常量(無法變化)例題
這個程序是報錯的 因為有數(shù)組名str++這個語句 有a++或a=a+1的語句都是錯的
這里有數(shù)組名a++所以也是錯的 二,數(shù)組指針(數(shù)組元素的類型都是指針)
這個程序輸出 5 4第一個5很好理解因為包含/0 char *pa【3】就是定義了一個數(shù)組元素都是地址類型的一維數(shù)組 數(shù)組的第一個元素是字符串“a”的首地址 數(shù)組第二個元素是字符串“bb”首地址 數(shù)組第三個元素是字符串“ccc”首元素地址 那么第二個4是如何來的 我們知道指針變量的字節(jié)數(shù)是4
我們看這個程序 有力的證明了雖然 p=a 但實際上指針變量p和地址常量a還是不一樣 sizeof(a)求的是a這個字符串的字節(jié)數(shù) sizeof(p)也就是sizeof(指針)默認為4 所以這題答案 5 4 三,結(jié)構(gòu)體類型的數(shù)組
這題答案就是zhao 10不多說了