[질문] 배열에 data를 입력하는 방법

sinovercos의 이미지

안녕하세요.

C code에서
char 형의 배열에는 다음과 같이 내용을 입력할 수도 있습니다.

char *char_array;
char_array="abcd";

두번째 줄에서 {'a','b','c','d'}의 배열이 메모리에 할당되고 배열의 처음 주소가 char_array에 저장됩니다. 이를 다르게 보면, "abcd"의 ""에 의해서 배열의 메모리가 할당되고, 거기에 data가 저장되며, "" 자체는 배열의 처음 주소를 나타내게 됩니다. 참 편리한 기능인 것 같습니다.

int나 float 형에 대해서도 이와 유사한 방법이 있으면 좋겠습니다. 제가 이런 생각을 하는 것은 c code에 좌표나 벡터 같은 다차원의 수를 사용하고 싶기 때문입니다. 예를 들어,

int math_function(int *vector1, int *vector2)
main()
{ math_function({2,3,4},{3,5,6}); }

같이 배열을 보통 숫자와 유사하게 사용하는 것입니다.

물론, 앞에서 말했듯이 문자 배열은 ""를 통해서 문자들의 묶음을 한 문자처럼 사용할 수 있습니다.

char math_function(char *vector1, char *vector2)
main()
{ math_function("abc","def"); }

와 같은 것이 가능합니다.

vector라는 함수를 정의해서 사용해도 되지만, 여러 차원을 표현하기 위해서는 가변인수함수를 사용해야 하는 등등의 문제가 있습니다.

그냥, a={1,2,3} 이나 funtion({2,3,4},{2,3}) 과 같이 배열을 쉽게 사용할 수 있는 방법을 알고 있으면 알려 주세요.

mrchu의 이미지

int a[5] = { 1, 2, 3, 4, 5}

int b[3][5] = {
{ 1, 2, 3, 4, 5},
{ 1, 2, 3, 4, 5},
{ 1, 2, 3, 4, 5}
}

sinovercos의 이미지

배열을 선언하면서 {}를 통해서 배열에 값을 입력할 수 있습니다.
하지만, 제가 원하는 것은 배열 선언 후에 배열에 값을 입력하는 것입니다.

버려진의 이미지

제가 맞게 이해 했는지 자신이 없지만, 없는 것으로 알고 있습니다. 있어도 속도가 문제가 있는 것 같습니다. 그래서 무지막지한 숫자를 계산해야 한다거나 할때는 나누고 붙이고 하는 것을 직접 코딩해서 하더군요. (주로 연구실, 학교에서)

bugiii의 이미지

혹시 C++ 로 바꾸실 수 있는 상황인가요?

C++ 라면 C와 비교해서 속도도 떨어지지 않으면서 괜찮은 표현 방법을 찾으실 수 있을텐데요... 아래정도의 수고만 하신다면 쓰시고자 하시는 목적에 부합되지 않을까 합니다.

물론 템플릿을 더 적극적으로 활용해서 아래 코드의 상수들의 계산 같은 경우 컴파일시 계산완료하는 방법도 있습니다.

#include <iostream>

using namespace std;

template< typename T >
struct Vector
{
        Vector() {}
        Vector( T a, T b, T c ) : x(a), y(b), z(c) {}
        T x, y, z;
};

template< typename T >
T prod( const Vector<T>& a, const Vector<T>& b )
{
        return( a.x * b.x + a.y * b.y + a.z * b.z );
}

typedef Vector<double> V;

int main()
{
        cout << prod( V( 1.1, 2.2, 3.3 ), V( 4.4, 5.5, 6.6 ) ) << endl;
        return( 0 );
}

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.