關於字串陣列 來自他人的哦

2021-06-25 07:56:01 字數 3166 閱讀 2822



來自該處:

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編輯器也有這個問題。就是這個 ...