C 의 지침
, 。 : , , , 。 。
:
:
(1)int*ptr;
(2)char*ptr;
(3)int**ptr;
(4)int(*ptr)[3];
(5)int*(*ptr)[4];
, << c c ++ >>。
, , 。 。 :
(1)int*ptr;// int*
(2)char*ptr;// char*
(3)int**ptr;// int**
(4)int(*ptr)[3];// int(*)[3]
(5)int*(*ptr)[4];// int*(*)[4]
? ?
, 。
, * , 。 :
(1)int*ptr;// int
(2)char*ptr;// char
(3)int**ptr;// int*
(4)int(*ptr)[3];// int()[3]
(5)int*(*ptr)[4];// int*()[4]
, 。
( ) 。 C , , " " " " " " , 。 , , , , 。
,
, , 。 32 , 32 , 32 32 。 , si zeof( ) 。 , XX, XX ; , 。
。 , , , , 。
, , : ? ? ?
? sizeof( ) 。 32 , 4 。
。
。 。 :
:
1、chara[20];
2、int*ptr=a;
...
...
3、ptr++;
, ptr int*, int, a。 3 , ptr 1, : ptr sizeof(int), 32 , 4。 , ptr a 4 。
char , , ptr a 0 , a 4 。
, :
:
intarray[20];
int*ptr=array;
...
// 。
...
for(i=0;i<20;i++)
{
(*ptr)++;
ptr++;
}
1。 ptr 1, 。
:
:
1、chara[20];
2、int*ptr=a;
...
...
3、ptr+=5;
,ptr 5, : ptr 5 sizeof(int), 32 5 4=20。 , ptr 5 ptr , 20 。 , 5 ptr a 0 , 5 ,ptr a 。 , 。 。
,ptr 5, , ptr 5 sizeof(int), ptr ptr 20 。
, ptrold n , ptrnew,ptrnew ptrold ,ptrnew ptrold 。ptrnew ptrold n sizeof(ptrold ) 。 ,ptrnew ptrold n sizeof(ptrold ) 。
ptrold n , ptrnew,ptrnew ptrold ,ptrnew ptrold 。ptrnew ptrold n sizeof(ptrold ) , ,ptrnew ptrold n sizeof(ptrold ) 。
& *
& ,* ... " "。
&a , a *, a , , a 。
*p 。 *p p , : p , p 。
:
inta=12;
intb;
int*p;
int**ptr;
p=&a;
//&a , int*, int, a 。
*p=24;
//*p , int, p , ,*p a。
ptr=&p;
//&p , p *, int **。 p , int*。 p 。
*ptr=&b;
//*ptr ,&b , , &b *ptr 。
**ptr=34;
//*ptr ptr , , * , int 。
, 。
:
:
inta,b;
intarray[10];
int*pa;
pa=&a;//&a 。
int**ptr=&pa;//&pa 。
*ptr=&b;//*ptr &b 。
pa=array;
pa++;// 。
:
char*arr[20];
char**parr=arr;// arr ,arr
char*str;
str=*parr;//*parr
str=*(parr+1);//*(parr+1)
str=*(parr+2);//*(parr+2)
, : , , , 。
, , , 。
,&a , 。*ptr , *ptr , *ptr pa, pa , *ptr 。
, << c c++ >>。
。 :
:
intarray[10]=,value;
...
...
value=array[0];// :value=*array;
value=array[3];// :value=*(array+3);
value=array[4];// :value=*(array+4);
, array , int[10], array , 0 , int*, int。 *array 0 。 ,array+3 3 , *(array+3) 3。 。
:
char*str[3]={
"Hello,thisisasample!",
"Hi,goodmorning.",
"Helloworld"
};
chars[80];
strcpy(s,str[0]);// strcpy(s,*str);
strcpy(s,str[1]);// strcpy(s,*(str+1));
strcpy(s,str[2]);// strcpy(s,*(str+2));
,str , , 。 str , 0 , char**, char*。
*str , char*, char, "Hello,thisisasample!" , 'H' 。 str+1 , 1 , char**, char*。
*(str+1) , char*, char, "Hi,goodmorning." 'H', 。
。 TYPEarray[n], array : , , TYPE[n]; , , TYPE*, TYPE, , 0 , , 0 。 , array++ 。
array 。
sizeof(array) , array , sizeof 。
*array ,array , 0 。sizeof(*array) 。
array+n( n=0,1,2,....。) ,array , array+n , TYPE*, TYPE, n 。 sizeof(array+n) 。
:
intarray[10];
int(*ptr)[10];
ptr=&array;
ptr , int(*)[10], int[10] , 。 ptr=&array ,array 。
sizeof(), ,sizeof( ) ? 。 :
int(*ptr)[10];
32 , :
sizeof(int(*)[10])==4
sizeof(int[10])==40
sizeof(ptr)==4
,sizeof( ) , 。
。
:
structMyStruct
{
inta;
intb;
intc;
}
MyStructss=;
// ss, ss 20,30 40。
MyStruct*ptr=&ss;
// ss 。 MyStruct*, MyStruct。
int*pstr=(int*)&ss;
// ss 。 ptr 。
ptr ss ?
:
ptr->a;
ptr->b;
ptr->c;
pstr ss ?
:
*pstr;// ss a。
*(pstr+1);// ss b。
*(pstr+2)// ss c。
MSVC++6.0 , , pstr , , :
:
intarray[3]=;
int*pa=array;
pa array :
*pa;// 0
*(pa+1);// 1
*(pa+2);// 2
。
C/C++ , , 。 , , , " ", 。
, , *pstr ss a, *(pstr+1) b。 a b , *(pstr+1) 。 。 , , 。
ptr 。
。
intfun1(char*,int);
int(*pfun1)(char*,int);
pfun1=fun1;
....
....
inta=(*pfun1)("abcdefg",7);// 。
。 , 。
:
intfun(char*);
inta;
charstr[]="abcdefghijklmn";
a=fun(str);
...
...
intfun(char*s)
{
intnum=0;
for(inti=0;i{
num+=*s;s++;
}
returnnum;
}
fun ASCII 。 , 。 , str s , str s,s str , str s 。 s 1 , str 1 。
, , 。 , , , 。
:
1、floatf=12.3;
2、float*fptr=&f;
3、int*p;
, p f, ? ?
p=&f;
。 p int*, int。 &f , float*, float。 , 。 MSVC++6.0 , , , , 。 , " ":
p=(int*)&f;
p, TYEP*TYPE, :
(TYPE*)p;
, TYPE*, TYPE, 。 p 。
, , 。
:
voidfun(char*);
inta=125,b;
fun((char*)&a);
...
...
voidfun(char*s)
{
charc;
c=*(s+3);*(s+3)=*(s+0);*(s+0)=c;
c=*(s+2);*(s+2)=*(s+1);*(s+1)=c;
}
}
32 , int ,char 。 fun 。 ? , &a , int*, int。 char*, char。 , , int* char* 。 , : char*temp, temp=(char*)&a, temp s。 :s char*, char, a 。
, , 32 , 32 。 ? :
unsignedinta;
TYPE*ptr;//TYPE int,char 。
...
...
a=20345686;
ptr=20345686;// ptr 20345686(
)
ptr=a;// ptr 20345686( )
。 。 ? , :
unsignedinta;
TYPE*ptr;//TYPE int,char 。
...
...
a= , ;
ptr=(TYPE*)a;// , 。
(TYPE*) (TYPE*) 。 (TYPE*) a 。 a , , ptr , 。
, 。 。 , :
:
inta=123,b;
int*ptr=&a;
char*str;
b=(int)ptr;// ptr 。
str=(char*)b;// str。
, , 。
:
:
chars='a';
int*ptr;
ptr=(int*)&s;
*ptr=1298;
ptr int* , int。 s 。 32 ,s ,int 。 s , s 。 ? , 。 , , , ! 。
:
:
1、chara;
2、int*ptr=&a;
...
...
3、ptr++;
4、*ptr=115;
, 。 ? 3 ptr 1 ,ptr a 。 ? 。 , 。 4 ! 。 , : 。 , , 。
:ptr1=(TYPE*)ptr2 , sizeof(ptr2 ) sizeof(ptr1 ), ptr1 ptr2 。 sizeof(ptr2 ) sizeof(ptr1 ), ptr1 ptr2 。
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Docker를 사용한 React 및 .NET Core 6.0 샘플 프로젝트 - 1부이 기사에서는 Entity Framework Core Code First 접근 방식을 사용하는 ASP.NET Core 6.0 WEP API의 CRUD(만들기, 읽기, 업데이트 및 삭제) 작업에 대해 설명합니다. 웹 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.