來自該處:
1.用指針對二維陣列的取值(要寫到二維陣列區域中)
假設乙個一維陣列a
很顯然一維陣列取值是 *(a+i) i代表指標的偏移量 a表示的是該陣列的首位址
二維陣列其實也就如同一維陣列 只不過這個一維陣列的元素是乙個一維陣列
所以對於二維陣列arr *(*(arr+i)+j) arr+i 是指向到arr中第i個元素
*(arr+i) 就是指向到2維陣列中某乙個元素 該元素本身又是乙個陣列
因此綜合起來就是*(*(arr+i)+j)
雖然二維陣列可以理解為一維陣列 但是不能通過 *p=arr 這樣的方式去指向
void testarr();
int *p=arr1; //這句話拆開應該是 int *p; p=arr1 最終p才是指標變數
int arr2[3][3]=,};
p=arr2[0];
int (*pp)[3]=arr2; //雖然二維陣列可以理解為一維陣列 但是不能像上面那樣定義乙個指標指向它
//要像這樣 定義乙個指標陣列指向2維陣列
pp++; //如果把2維陣列看做乙個矩陣 這相當於移動到下一行
//指標原本指向 這個元素, 現在指向了
printf("%d",*(*pp+1 )); //輸出5
}2.指向字串的指標變數
char *str="sdsdsds";
printf("%s", str );
或者 char *str;
str="sdsdsds";
printf("%s", str );
// 注意賦給str的不是字串 也不是字元 而是字串的首位址
但是如果換成這樣就不行:
char *str;
*str="sdsdsds";
printf("%s", str );
3.字串指標作為引數(陣列複製)
常見做法:
#include "stdio.h "
void copy_str(char from, char dest )
dest[i]='\0';
}void main()
使用指標作為引數
#include "stdio.h "
void copy_str(char *from, char *dest )
*dest='\0';
}void main()
copy_str 中的for迴圈可以改寫為
while ((*dest=*from)!='\0' )
或者進一步:
while ((*dest++=*from++)!='\0' );
指標的移動
void main()
輸出 rilakkumae
指標陣列
#include "stdio.h "
void testarr();
char str[5]=;
//定義了乙個陣列 存放的陣列型別是char指標型
//該指標指向乙個字串陣列 也就是char型的2維陣列
char *names=
;void main()
*p=names[0];
testarr();
}void testarr();
int *p=arr1; //這句話拆開應該是 int *p; p=arr1 最終p才是指標變數
int arr2[3][3]=,};
p=arr2[0];
int (*pp)[3]=arr2; //雖然二維陣列可以理解為一維陣列 但是不能像上面那樣定義乙個指標指向它
//要像這樣 定義乙個指標陣列指向2維陣列
pp++; //如果把2維陣列看做乙個矩陣 這相當於移動到下一行
//指標原本指向 這個元素, 現在指向了
printf("%d",*(*pp)+1 ); //輸出5
} 示例2
#include "stdio.h "
void main();// 或者是;
char str[6]=; //注意要指定高維陣列的大小 其長度為該陣列最長元素的字元個數+1
char *p=arr;
while(*p!='\0' )
printf("\n");
char *name=; //不能寫成 *name=str
char **pp=name;
printf("%s\n",*pp);//輸出sss
printf("%c\n", *(*pp));//或者簡寫為printf("%c\n", **pp); //輸出s
int i=0;
while ( i<3)
//**pp 兩個*的含義
//如果只有一顆* 表示指向字元資料的指標
//兩顆* 表示指向字元指標的指標
} 給字元型陣列賦值乙個字串
定義乙個字元陣列
char str[20]="123123";
char str2[20]=;
但是注意不能像下面這樣
char str;
str="123123";
使用陣列的時候,如果在定義陣列的同時並沒有對其初始化,必須要指定該陣列的長度,否則系統不知道如何為其分配空間
要麼char str="123123"; 要麼char str[20]; 不能是 char str;
如果是通過char str[20];這樣的方式定義的陣列
後面就不能再通過str= 或是 str=這樣的方式賦值了
目前發現可以這樣
char str[3];
str[1]='2';
//。。。。
難道c語言中就不能先頂乙個字串然後在用的時候再賦值嗎?
當然可以 用strcpy這個函式
strcpy(str,"address" );
< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />
strcat 的使用
char s3="sss";
char s4=;
//printf("%s\n",strcat(s3,s4) ); // 和下面用指標輸出的效果相同
char *s5=strcat(s3,s4);
printf("%s\n" ,s5);
關於字元陣列和字串陣列
首先看2個東東 char str2 這2個哥們兒長的很像,可實際的涵義確差老了。2個都是c裡面的東東。str1叫字元陣列,首先它是乙個陣列,5個元素但長度為4 加上個 0 其實就相當於 abcd 看看怎麼變過來的 首先變為char str1 abcd 然後把括號去掉就是 char str1 abcd...
關於字元陣列和字串
關於字元陣列和字串 引用 火未燃說 char a 5 和char a 10 有效字元5個,0 表示結束,china共5個字元,但在記憶體佔6個位元組,a 10 佔足五個後遇到 0 結束 結束符 系統會自帶的,不用畫蛇添腳 加上也無所謂 by eviloctal 首先說火未燃關於空字元系統自己加的說法...
來自js的神秘字串
經過一段時間的探索,snmp終於能夠抓到一些數了,為了更簡明的表達這些資料,我想著用乙個圖形外掛程式表示出來,這裡選擇了highcharts來配合tornado web框架,其實每個都差異不大。下面介紹因為轉譯浪費了我數小時時間的故事。沒曾想在csdn的markdown編輯器也有這個問題。就是這個 ...