C语言字符串二维数组引用可以省略列下标吗? C语言的二维数组哪一个下标可以省略不写?

C\u8bed\u8a00\u4e2d\u4e8c\u7ef4\u5b57\u7b26\u6570\u7ec4\u7701\u7565\u5217\u4e0b\u6807\u662f\u5426\u5c31\u662f\u5b57\u7b26\u4e32

\u4e8c\u7ef4\u6570\u7ec4\uff0c\uff08\u884c\uff09\u4e3a\u4e8c\u7ea7\u6307\u9488\uff0c\uff08\u5217\uff09\u4e3a\u4e00\u7ea7\u6307\u9488\u3002
\u6240\u4ee5PrintBuffer[PrintBufferWr]\u53d6\u5f97\u7684\u662f\u6307\u5b9a\u884c\u7684\u9996\u5217\u5730\u5740\uff0c\u4e00\u7ea7\u6307\u9488\uff0c\u53ef\u4ee5\u8d4b\u503c\u7ed9char *

\u7b2c\u4e00\u4e2a\u4e0b\u6807\u53ef\u4ee5\u7701\u7565\uff0c\u7b2c\u4e8c\u4e2a\u4e0d\u80fd\u7701\u7565~

代码语法上是没有问题的。
(1)c语言的二维数组的每一行都可以看成一个一维数组,如书上的name就可以看成5个一维数组组成的。如果数组恰好定义成char类型,那这些一维数组又可以看成字符串。
(2)代码一开始就是用strcpy函数对这5个字符串赋值。每行的大小只有10个字节,因此它还要检测输入是否越界。老师应该说过,c字符串的结尾要有个结束符0,所以这里的检测直觉上是有问题的,>10改成>=10更好一些。
(3)访问这些一维数组最直接的方法就是书上的做法。name[i]的意思就是第i行的起始地址。在vs编译器上还允许
char *p = name[i];
char (*p)[10] = &name[i];
char (*p)[10] = (char (*)[10])name[i];
可能有些编译器不完全支持

不可以这样引用,但可以用数组指针来实现,如下:
char (*np)[10];
np = name;
按上述声明:
*(np + 0)表示name[0][0]到name[0][9]
*(np + 1)表示name[0][0]到name[0][9]

C语言引用时可以省略第一个下标,但不能省略第二个。

省略列下标后就表示一个char*类型的地址(就是对应行的列下标为0的元素的地址)了,只能赋值给char*类型的指针(除了强制转外)。
即:
如有char name[5][10];
则char *p=name[0];可以,
p=name[4];也可以。

敲一次代码就知道

  • C璇█涓寚閽寮曠敤浜岀淮鏁扮粍鍏冪礌鐨勯棶棰
    绛旓細鍋囪a鏄竴涓3琛4鍒楃殑浜岀淮鏁扮粍,璇烽棶涓轰粈涔坅[0]涓*(a+0)鏄瓑浠风殑,鎴戠殑鐞嗚В鏄簩缁存暟缁勫悕a鏃㈢劧鏄鏁扮粍棣栧厓绱犵殑鍦板潃,閭d箞(a+0)涔熸槸涓涓湴鍧,鈥*(a+0)鈥濆氨鏄寚鍚戔(a+0)鈥濊繖涓湴鍧鐨勫唴瀹(鍗抽涓厓绱犲)銆俛[0]涓*(a+0),涓涓厓绱犲湴鍧鍜屼竴涓厓绱犲唴瀹瑰張濡備綍鑳界瓑浠穨~璇锋噦C璇█鐨勪汉甯繖瑙g瓟,鎸囧嚭鎴戠殑...
  • c璇█鐨鏁扮粍鐨勪腑鎷彿涓暟瀛楄兘鍚︾渷鐣?浠涔堟椂鍊鍙互鐪佺暐?
    绛旓細鎴栬浜岀淮鏁扮粍锛屽彲浠ョ渷鐣ヨ鏁帮紝浣嗕笉鍙互鐪佺暐鍒楁暟锛屽int a[][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};杩欒瘲绯荤粺鑷姩榛樿琛屾暟鏄3 杩樻湁灏辨槸褰㈠弬涓紝鍙互鐪佺暐涓缁存暟缁勭殑闀垮害鎴栬呬簩缁存暟缁勭殑琛屾暟锛屽锛歷oid fun(int a[],int b[][4]){//鍑芥暟浣撶椹殑}杩欎釜鍑芥暟涓涓涓弬鏁版槸涓缁存暟缁...
  • 鍏充簬C璇█涓鏁扮粍鍏冪礌鐨寮曠敤闂
    绛旓細A:int pp;琛ㄧずpp鎵鎸囩殑鏄竴涓浜岀淮鏁扮粍锛屾墍浠ュ畠鐨寮曠敤鍙互杩欐牱鐢╬p[][]鐨勫舰寮;D:鍥犱负p[i]=&a[i*4];鏈塸[0]=&a[0],鎵浠*(p+2),鍗硃[2],鎸囩殑鏄痑[8];(*(p+2)+2)鎸囩殑灏辨槸a[10];p[0]-> a[0]a[1]a[2]a[3]p[1]-> a[4]a[5]a[6]a[7]p[2]-> a[8]a[9]a...
  • C璇█楂樻墜璇疯繘鈥︹﹀湪绾跨瓑 int a[ ] [3] = {{1,0,2},{ },{2,3}}...
    绛旓細绛旓細鎻愰棶鑰呬富鍔ㄥ0鏄庢帓闄や簡涔﹀啓鏃跺嚭鐜拌緭鍏ユ硶鍒囨崲瀵艰嚧鐨勪功鍐欓敊璇殑鍙兘锛屽崟浠庤繖鍙ユ潵鐪嬭娉曟柟闈㈡病鏈変换浣曢敊璇紝閿欒鍏抽敭鍦ㄤ簬浣犻棶棰樿ˉ鍏呮椂鐨勪竴鍙モ滃閮ㄦ暟缁勨濓紒璇存槑锛1.C璇█涓浜岀淮鏁扮粍鍒濆鍖栨椂绗簩缁翠笉鍙互鐪佺暐锛岃岀涓缁存槸鍙互鐪佺暐鐨勶紱2.澶栭儴鏁扮粍鍙兘鍦ㄥ師鏂囦欢涓姞澶栭儴鍏ㄥ眬鍙橀噺extern鍒濆鍖栧悗鍦ㄥ閮寮曠敤锛屽洜姝...
  • C璇█棰樼洰 瀵浜岀淮鏁扮粍鐨勬纭鏄庢槸:
    绛旓細c鏄纭殑銆浜岀淮鏁扮粍鍒濆鍖栫殑褰㈠紡涓猴細鏁版嵁绫诲瀷 鏁扮粍鍚峓鏁村父閲忚〃杈惧紡][ 鏁村父閲忚〃杈惧紡]={ 鍒濆鍖栨暟鎹 }锛涘湪{ }涓粰鍑哄悇鏁扮粍鍏冪礌鐨勫垵鍊硷紝鍚勫垵鍊间箣闂寸敤閫楀彿鍒嗗紑銆傛妸{ }涓殑鍒濆间緷娆¤祴缁欏悇鏁扮粍鍏冪礌銆傛湁濡備笅鍑犵鍒濆鍖栨柟寮忥細鈶 鍒嗚杩涜鍒濆鍖 int a[2][3]={{1,2,3},{4锛5锛6}};鍦▄ }鍐呴儴...
  • C璇█涓,瀵浜岀淮鏁扮粍鐨寮曠敤鏍煎紡?
    绛旓細绯荤粺寰堥毦鍒ゆ柇浣犳槸鍚﹂潪娉寮曠敤浜嗐傚彧鑳借嚜宸卞垽鏂傛瘮濡俰nt n[2][2];閲屽彧鑳芥湁n[0][0]鍒皀[1][1]鍥涗釜鍏冪礌锛岃屽鏋滀綘scanf("%d",&n[2][2]);灏辩畻鏄潪娉曞紩鐢ㄤ簡銆備笉鎶ラ敊锛屼絾杩愯涓嶄簡銆浜岀淮鏁扮粍鍚嶆湰韬槸涓寚鍚戞寚閽堢殑鎸囬拡锛岃岃棣栧悕鏄痠nt鍨嬫寚閽堛
  • c璇█浜岀淮鏁扮粍杈撳嚭浼氳嚜鍔ㄧ渷鐣0鍚
    绛旓細涓嶄細銆C璇█鏄竴绉嶈绠楁満绋嬪簭璁捐璇█銆傛棦鏈夐珮绾ц瑷鐨勭壒鐐癸紝鍙堝叿鏈夋眹缂栬瑷鐨勭壒鐐广浜岀淮鏁扮粍杈撳嚭涓嶄細鑷姩鐪佺暐0锛屽彲浠ヤ綔涓虹郴缁熻璁¤瑷锛岀紪鍐欏伐浣滅郴缁熷簲鐢ㄧ▼搴忋
  • c璇█鐢浜岀淮鏁扮粍鍚寮曠敤鍏冪礌鐨勬寚閽堣〃绀烘柟娉:
    绛旓細浜岀淮鏁扮粍鍚峚鏄竴涓寚鍚戞寚閽堢殑鎸囬拡銆備篃鏄竴涓寚閽堟暟缁勫悕锛屽畠鍚3涓厓绱狅紝a[0]a[1],a[2]銆傝櫧鐒禷瀛樺偍鐨勫湴鍧鏄鏁扮粍棣栧厓绱犵殑鍦板潃锛屼絾瀹冩寚鍚戠殑骞朵笉鏄竴涓彉閲忥紝鑰屾槸涓涓寚閽堛傚簲涓篴鏄竴涓寚鍚戞寚閽堢殑鎸囬拡锛屽畠鎸囧悜鐨勬槸鍜岃嚜宸卞瓨鍌ㄧ殑鍦板潃鐩稿悓鐨勬寚閽堬紝鍗砤[0],a[0]鏄涓琛屼竴缁存暟缁勭殑鎸囬拡锛屽彲浠ユ寚鍚...
  • c璇█浜岀淮鏁扮粍鎬庝箞鐢ㄥ嚱鏁颁竴涓竴涓皟鐢,杩欐牱瀵瑰悧
    绛旓細1.鍙互鐢ㄦ寚閽堛倂oid Func(int **array, int m, int n);鍦ㄨ浆鍙樺悗鐨勫嚱鏁颁腑锛宎rray[i][j]杩欐牱鐨勫紡瀛愭槸涓嶅鐨(涓嶄俊锛屽ぇ瀹跺彲浠ヨ瘯涓涓)锛屽洜涓虹紪璇戝櫒涓嶈兘姝g‘鐨勪负瀹冨鍧锛屾墍浠ユ垜浠渶瑕佹ā浠跨紪璇戝櫒鐨勮涓烘妸array[i][j]杩欐牱鐨勫紡瀛愭墜宸ヨ浆鍙樹负锛((int*)array + n*i + j);2.鍙互鐢浜岀淮鏁扮粍鍚嶄綔涓...
  • C璇█浜岀淮鏁扮粍鐨寮曠敤,杩欎釜a銆3銆戙4銆=3璇存槸瓒呭嚭浜嗘暟缁勫畾涔夌殑涓婄晫,a...
    绛旓細鍥犱负鏁扮粍涓嬫爣 鏄粠0寮濮嬬畻鐨 鍏冪礌涓暟 3 int a[3]锛涗笅鏍囧氨鏄 0 1 2 a[0] 銆乤[1]銆 a[2]
  • 扩展阅读:截取字符串的三种方法 ... 二维字符串数组的输入 ... c#定义 二维数组的方法 ... c语言截取指定字符串 ... 二维数组c语言例子 ... substr截取字符串用法 ... 引用符合条件字符串 ... 二维字符数组的使用 ... c语言二维数组怎么输入 ...

    本站交流只代表网友个人观点,与本站立场无关
    欢迎反馈与建议,请联系电邮
    2024© 车视网