pointer
1.variable row
int imsi[3][2];
int (*imsip)[2]
*(*(imsip+row)+col) = imsip[row][col]=**imsip
imsip = imsi;
*imsip==imsi[0];
*(imsip+1)==imsi[1];
*(imsip+2)==imsi[2]
2. variable col
int *temp[3]
*temp[0]. *temp[1], *temp[2]
int imsi1[2]={5,7};
int imsi2[3]={1.2.3};
int imsi3[4]={8,9,10,11};
temp[0] == imsi1;
3. String allocation
char name[5][20];//read/write
char *namep[5];//read only
name[0]="this is not working"; //X
namep[0]="this is working well";//O
4. 2way initialization
char init[30];
char *namep[5];
namep[1] = (char *)malloc(sizeof(char)*strlen("test111")+1);
namep[1]="test123";
namep[1]="test321";
namep[0]=init;
strcpy(namep[0],"well really?");
puts(namep[0]);//well really?
namep[2] = init;//copy namep[0]
strcpy(namep[2],"modified?");
puts(namep[0]);//modified?
puts(namep[2]);//modified?
3.pointer vs array
*(string+3)==string[3]==*(3+string)==3[string]
temp[1]==imsi2;
temp[2]==imsi3;
4.modify pointer by malloc, array
namep[3]=(char*)malloc(sizeof(char)*strlen("111111111"+1));
//namep[3]="testalloc";// 이렇게 하면 새로운 문자열의 주소를 할당한다. 변경시 segment fault 발생
// namep[3][1]='T';//segment fault
//strcpy를 통해 malloc을 통해 할당된 위치에 복제하는 경우 수정가
strcpy(namep[3],"amiok");
namep[3][1]='T';
puts(namep[3]);//aTiok
namep[4] = init;
// namep[4]="testok";// 이렇게 하면 새로운 문자열의 주소를 할당한다. 변경시 segment fault
init[1]='T';
namep[4][2]='U';
puts(namep[4]);
puts(init);
'IT > 개발의짜릿함' 카테고리의 다른 글
SQL변수 java변수 변환(_소문자를 대문자로) (0) | 2017.12.11 |
---|---|
[C언어] 형별 최대 자리수, ascii (0) | 2017.01.31 |
git command 및 remote git hub setting 및 git config 및 git branch (0) | 2016.11.25 |
Recent Comment