C 언어에 대한 질문 - 페이지 2

 

고마워, 나는 이미 이 언어를 사랑한다

이동하는 데 약간의 시간이 걸리며 주제에 대한 유용한 팁

중요한지는 모르겠지만 C는 있고 C++는 없습니다
 
#include "pch.h"
#include <iostream>
#include <cstdlib>

using namespace std;

int * Foo( int i)
{
         int * x = ( int *)malloc ( sizeof ( int ));
        *x = i;
         return x;
}

int main()
{
         int * x = Foo( 5 );
        cout << *x;
        free (x);
         return 0 ;
}

그리고 이것은 동일하지만 C 스타일에서만 가능합니다.

 

그건 그렇고, 예제는 모두 여기에서 https://minepy.readthedocs.io/en/latest/libmine.html

워밍업을 위해 이식

C API — minepy 1.2.4.dev documentation
  • minepy.readthedocs.io
This chapter describes the mine C library. These functions and structures are declared in the header file , located in the folder. You need to add in your C source files and link your program with . Defines¶ EST_MIC_APPROX ¶ Original estimator described in DOI: 10.1126/science.1205438. EST_MIC_E ¶ Estimator described in DOI: arXiv:1505.02213...
 
Vladimir Simakov :

함수 내부에 메모리를 할당하고 링크를 전달한 변수 범위에서 해제했습니다.

님 글 못봤네요 저랑 동시대에 쓰신듯 한데 설명을 하려고 했는데

20년 전, 내가 C++를 배울 때, 나는 다음과 같이 포인터로 작업했던 것을 기억했다.

- 포인터 선언 - 포인터의 값은 메모리 위치의 주소입니다.

- 역참조된 포인터는 포인터와 동일한 주소의 메모리 셀에 저장된 값을 가집니다.

- 포인터를 역참조할 때 포인터 유형을 설명하는 정확히 바이트 수가 제거(기록)됩니다. 포인터 유형이 단순( int, double ...)이면 각각 4 또는 8 바이트로 작업합니다. 복잡한 유형이 있으면 모든 것이 간단합니다. 구조가 있으면 유사한 작업이 수행됩니다. 메모리 셀로 작업하지만 컴파일러는 유형의 적합성을 확인하고 추가로 데이터를 구조의 모든 멤버 로 "분해"합니다.


그들이 "손가락에"라고 말하는 것처럼))))


PS: 객체 및 함수에 대한 포인터는 유사하게 작동하지만 함수 호출(메서드)이 추가로 형성됩니다. 데이터로 작업하는 대신 컴파일러는 포인터가 역참조될 때 함수를 호출합니다.

 
Igor Makanu :

님 글 못봤네요 저랑 동시대에 쓰신듯 한데 설명을 하려고 했는데

20년 전, C++을 배울 때, 다음과 같이 포인터로 작업하는 것을 외웠습니다.

- 포인터 선언 - 포인터의 값은 메모리 위치의 주소입니다.

- 역참조된 포인터는 포인터와 동일한 주소의 메모리 셀에 저장된 값을 가집니다.

- 포인터를 역참조할 때 포인터 유형을 설명하는 정확히 바이트 수가 제거(기록)됩니다. 포인터 유형이 단순( int, double ...)이면 각각 4 또는 8 바이트로 작업합니다. 복잡한 유형이 있으면 모든 것이 간단합니다. 구조가 있으면 유사한 작업이 수행됩니다. 메모리 셀로 작업하지만 컴파일러는 유형의 적합성을 확인하고 추가로 데이터를 구조의 모든 멤버 로 "분해"합니다.


그들이 "손가락에"라고 말하는 것처럼))))


PS: 객체 및 함수에 대한 포인터는 유사하게 작동하지만 함수 호출(메서드)이 추가로 형성됩니다. 데이터로 작업하는 대신 컴파일러는 포인터가 역참조될 때 함수를 호출합니다.

음 ... 아니. 함수는 함수 내부에 할당될 메모리에 대한 포인터를 반환합니다. 포인터가 메모리에 있는 엔터티의 첫 번째 바이트 주소 값이기 때문에 포인터를 역참조할 때 추가 함수 호출이 없습니다.

메모리가 해제되면 메모리 관리자는 참조로 메모리를 free + type 크기로 표시하고 그게 전부입니다.

 
Vladimir Simakov :

음 ... 아니. 함수는 함수 내부에 할당될 메모리에 대한 포인터를 반환합니다. 포인터가 메모리에 있는 엔터티의 첫 번째 바이트 주소 값이기 때문에 포인터를 역참조할 때 추가 함수 호출이 없습니다.

메모리가 해제되면 메모리 관리자는 참조로 메모리를 free + type 크기로 표시하고 그게 전부입니다.

포인터가 작동하는 일반적인 원리를 썼습니다.

좋아, 우리는 여기서 멈출 필요가 있다. 그렇지 않으면 우리는 topicstarter를 누가, 무엇을 쓰고 생각했는지에 대한 토론의 야생으로 이끌 것입니다.

추신: 저는 항상 설명하는 방법을 전혀 모른다고 말합니다. 여기 예제에서 Sharp C 구문으로 작성한 https://metanit.com/sharp/tutorial/8.3.php 도 작동합니다.

Указатели | C#
  • metanit.com
Если вы программировали на С/С++, то, возможно, вы знакомы с таким понятием как . Указатели позволяют получить доступ к определенной ячейке памяти и произвести определенные манипуляции со значением, хранящимся в этой ячейке. В языке C# указатели очень редко используются, однако в некоторых случаях можно прибегать к ним для оптимизации...
 
Maxim Dmitrievsky :
 void quicksort( double *a, int *idx, int l, int u)
{
   int i, m, idx_temp;
   double a_temp;

   if (l >= u)
     return ;

  m = l;
   for (i=l+ 1 ; i<=u; i++)
    {
       if (a[i] < a[l])
        {
          ++m;

          idx_temp = idx[m];
          idx[m] = idx[i];
          idx[i] = idx_temp;

          a_temp = a[m];
          a[m] = a[i];
          a[i] = a_temp;
        }
    }

  idx_temp = idx[l];
  idx[l] = idx[m];
  idx[m] = idx_temp;

  a_temp = a[l];
  a[l] = a[m];
  a[m] = a_temp;

   quicksort (a, idx, l, m- 1 );
   quicksort (a, idx, m+ 1 , u);
}

더 쉽지 않습니까?:

#python

list.sort()

https://www.youtube.com/watch?v=vHeeXI84GIA를 시청하세요 .

기사에서 기사로, 언어에서 언어로 서두르지 말고 함께 힘을 모아

 
Кеша Рутов :

더 쉽지 않습니까?:

#python

list.sort()

https://www.youtube.com/watch?v=vHeeXI84GIA를 시청하세요 .

기사에서 기사로, 언어에서 언어로 서두르지 말고 함께 힘을 모아

파이썬이 어디에서 왔다고 생각합니까?

확인하고 ... 링크를 추가로 탐색하여 "비디오 수업의 10 일 이상 학교" .. neighing ... 계속))

 
Dmitry Fedoseev :

파이썬이 어디에서 왔다고 생각합니까?

확인하고 ... 링크를 추가로 탐색하여 "비디오 수업의 10 일 이상 학교" .. neighing ... 계속))

글쎄, 글쎄, C로 작성하지만 어셈블러, 거래 시스템 및 머신 러닝으로 즉시 작성하는 것이 더 낫습니다. 우리는 100년 후, 다음 생에 첫 프로토타입을 작성할 때 이야기할 것입니다...


위협 나는 C와 ASM에 반대하지 않습니다. 어떤 목적을 위한 또 다른 질문입니까? 장작, OS, 컨트롤러, 새로운 YaP 등. 여기에는 옵션이 없지만 C의 응용 프로그램 소프트웨어는 힘들고 C에는 실제로 스레드가 없으며 운영 체제마다 모든 것이 다릅니다. 이것은 장작 및 바이러스 작성자를 위한 포럼이 아닙니다. TS 및 MO의 경우 세계 표준은 python입니다. , 극단적인 경우 java\seasharp. 그리고 Maxim은 잘 알려진 인터넷 서퍼입니다. 그는 미취학 아동처럼 여기저기서 "흥미로운"것을 찾아 올라가고 주석을 읽고 과학적으로 보이기 위해 똑똑한 단어를 잡고 더 멀리 봅니다. 그러한 활동은 좋은 것으로 끝나지 않습니다. , 성인 남성의 경우 자신 만 속일 수 있습니다. 그는 곧 수입원이 고갈되어 LIFE에 직면하게 될 것이며, 그는 지방 공직을 위한 "연수생"에게도 데려가지 않을 것입니다. 무료로, 그는 또한 서비스 부문에 가야 할 것입니다. 치열한 경쟁, 그러나 적어도 그는 정신을 차렸다.

 
Кеша Рутов :

글쎄, 글쎄, C로 작성하지만 어셈블러, 거래 시스템 및 머신 러닝으로 즉시 작성하는 것이 더 낫습니다. 우리는 100년 후, 다음 생에 첫 프로토타입을 작성할 때 이야기할 것입니다...


위협 나는 C와 ASM에 반대하지 않습니다. 어떤 목적을 위한 또 다른 질문입니까? 장작, OS, 컨트롤러, 새로운 YaP 등. 여기에는 옵션이 없지만 C의 응용 프로그램 소프트웨어는 어렵고 C에는 실제로 스레드가 없으며 모든 운영 체제마다 다릅니다. 이것은 장작과 바이러스 작성자를 위한 포럼이 아닙니다. TS 및 MO의 경우 세계 표준은 다음과 같습니다. 파이썬, 극단적인 경우 java\seasharp. 그리고 Maxim은 잘 알려진 인터넷 서퍼입니다. 그는 미취학 아동처럼 여기저기서 "흥미로운"것을 찾아 올라가고 주석을 읽고 과학적으로 보이기 위해 똑똑한 단어를 잡고 더 멀리 봅니다. 그러한 활동은 좋은 것으로 끝나지 않습니다. , 성인 남성의 경우 자신 만 속일 수 있습니다. 그는 곧 수입원이 고갈되어 LIFE에 직면하게 될 것이며, 그는 지방 공직을 위한 "연수생"에게도 데려가지 않을 것입니다. 무료로, 그는 또한 서비스 부문에 가야 할 것입니다. 치열한 경쟁, 그러나 적어도 그는 정신을 차렸다.

그리고 11번째 표준 이후로 C++이 당신을 기쁘게 하지 못한 것은 무엇입니까? 나는 C에 대해 동의하지만 현대적인 플러스는 매우 평범해 보입니다. C/C++가 하드웨어에 더 가깝고 "이봐, 쇠 조각, 당신이 이것을 가지고 있고, 그것을 돌려주세요." 궁극적으로 이 모든 기능은 이미 STL의 한 형태 또는 다른 형태이거나 문제 없이 구현되지만 이러한 모든 프레임워크에서 메모리로 직접 작업하는 것은 가능하지 않다는 사실입니다.